Xcode 7 beta 5 (Swift sürüm 2) itibariyle artık kullanarak varsayılan olarak tip isimleri ve numaralandırma davaları yazdırabilir print(_:)
, ya da dönüştürmek String
kullanarak String
'ın init(_:)
başlatıcı veya dize enterpolasyon sözdizimi. Yani örneğiniz için:
enum City: Int {
case Melbourne = 1, Chelyabinsk, Bursa
}
let city = City.Melbourne
print(city)
// prints "Melbourne"
let cityName = "\(city)" // or `let cityName = String(city)`
// cityName contains "Melbourne"
Dolayısıyla, bir dizgi değişmezini döndürmek için her durumu açan bir kolaylık işlevini tanımlamaya ve sürdürmeye artık gerek yoktur. Buna ek olarak, ham değer türü belirtilmemiş olsa bile, herhangi bir numaralandırma için otomatik olarak çalışır.
debugPrint(_:)
& String(reflecting:)
tam nitelikli bir ad için kullanılabilir:
debugPrint(city)
// prints "App.City.Melbourne" (or similar, depending on the full scope)
let cityDebugName = String(reflecting: city)
// cityDebugName contains "App.City.Melbourne"
Bu senaryoların her birinde yazdırılanları özelleştirebileceğinizi unutmayın:
extension City: CustomStringConvertible {
var description: String {
return "City \(rawValue)"
}
}
print(city)
// prints "City 1"
extension City: CustomDebugStringConvertible {
var debugDescription: String {
return "City (rawValue: \(rawValue))"
}
}
debugPrint(city)
// prints "City (rawValue: 1)"
(Ben, örneğin, bir anahtar açıklamaya geri başvurmadan "şehir Melbourne olduğunu" yazdırmak için. Kullanmak, bu "varsayılan" değer haline çağrı için bir yol bulamadı \(self)
uygulanmasında description
/ debugDescription
sonsuz özyinelemeye neden olur.)
Yukarıdaki yorumlar String
bireyin init(_:)
ve init(reflecting:)
başlatıcıları ne yansıyan tip uygun olup bağlı olarak yazdırılır tam olarak ne açıklar:
extension String {
/// Initialize `self` with the textual representation of `instance`.
///
/// * If `T` conforms to `Streamable`, the result is obtained by
/// calling `instance.writeTo(s)` on an empty string s.
/// * Otherwise, if `T` conforms to `CustomStringConvertible`, the
/// result is `instance`'s `description`
/// * Otherwise, if `T` conforms to `CustomDebugStringConvertible`,
/// the result is `instance`'s `debugDescription`
/// * Otherwise, an unspecified result is supplied automatically by
/// the Swift standard library.
///
/// - SeeAlso: `String.init<T>(reflecting: T)`
public init<T>(_ instance: T)
/// Initialize `self` with a detailed textual representation of
/// `subject`, suitable for debugging.
///
/// * If `T` conforms to `CustomDebugStringConvertible`, the result
/// is `subject`'s `debugDescription`.
///
/// * Otherwise, if `T` conforms to `CustomStringConvertible`, the result
/// is `subject`'s `description`.
///
/// * Otherwise, if `T` conforms to `Streamable`, the result is
/// obtained by calling `subject.writeTo(s)` on an empty string s.
///
/// * Otherwise, an unspecified result is supplied automatically by
/// the Swift standard library.
///
/// - SeeAlso: `String.init<T>(T)`
public init<T>(reflecting subject: T)
}
Bu değişiklik hakkında bilgi
için sürüm notlarına bakın .
print(enum)
istiyorsanız kullanabilirsinizString(enum)