Xcode 7 बीटा 5 (स्विफ्ट संस्करण 2) के रूप में, अब आप डिफ़ॉल्ट रूप से टाइप नाम और एनम मामलों को प्रिंट कर सकते हैं print(_:)
, या 's initializer या स्ट्रिंग इंटरपोलेशन सिंटैक्स ' का String
उपयोग करके परिवर्तित कर सकते हैं । तो आपके उदाहरण के लिए:String
init(_:)
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"
इसलिए एक स्ट्रिंग फ़ंक्शन को वापस लौटने के लिए प्रत्येक मामले पर स्विच करने वाले एक सुविधा फ़ंक्शन को परिभाषित करने और बनाए रखने की आवश्यकता नहीं है। इसके अलावा, यह किसी भी एनम के लिए स्वचालित रूप से काम करता है, भले ही कोई कच्चा-मूल्य प्रकार निर्दिष्ट नहीं किया गया हो।
debugPrint(_:)
और String(reflecting:)
पूरी तरह से योग्य नाम के लिए इस्तेमाल किया जा सकता है:
debugPrint(city)
// prints "App.City.Melbourne" (or similar, depending on the full scope)
let cityDebugName = String(reflecting: city)
// cityDebugName contains "App.City.Melbourne"
ध्यान दें कि आप इनमें से प्रत्येक परिदृश्य में जो छपा है उसे कस्टमाइज़ कर सकते हैं:
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)"
(मुझे इस "डिफ़ॉल्ट" मूल्य में कॉल करने का एक तरीका नहीं मिला है, उदाहरण के लिए, "शहर मेलबर्न है" को एक स्विच स्टेटमेंट के लिए वापस लेने के बिना प्रिंट \(self)
करने के लिए description
/ debugDescription
एक अनंत पुनरावर्तन का उपयोग करता है।
ऊपर टिप्पणी String
की init(_:)
और init(reflecting:)
initializers, का वर्णन वास्तव में क्या छपा है क्या परिलक्षित प्रकार अनुरूप पर निर्भर करता है:
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)
}
इस परिवर्तन के बारे में जानकारी के लिए रिलीज़ नोट
देखें ।
print(enum)
हैंString(enum)