এক্সকোড 7 বিটা 5 (সুইফ্ট সংস্করণ 2) হিসাবে আপনি এখন টাইপ নাম এবং এনাম কেসগুলি ডিফল্টরূপে ব্যবহার করে মুদ্রণ করতে পারেন print(_:)
, বা এর আরম্ভকারী বা স্ট্রিং ইন্টারপোলেশন সিনট্যাক্স 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)