我正在嘗試創建一個具有默認實作的協議,該協議將列舉本身作為字串回傳。但無法找到正確的語法。
這是我到目前為止嘗試過的代碼,但它沒有采用默認實作
protocol TestSelf {
static var desc: String { get set }
}
extension TestSelf {
get {
static var desc: String {
String(describing: self)
}
set {
print(\(new value))
}
}
enum Test: TestSelf { }
Access
print(Test.desc)
要求我desc在列舉中實作,說'static var' declaration requires an initializer expression or an explicitly stated getter.我不想再次初始化它。它應該與默認實作一起使用。
問:在所有不需要寫的地方,
String(describing: Test.self)
我可以直接使用
Test.desc
uj5u.com熱心網友回復:
我想你想要這樣的東西(這是操場代碼):
protocol SelfDescriber {
static var descriptionOfSelf: String {get}
}
extension SelfDescriber {
static var descriptionOfSelf: String {
String(describing: Self.self)
}
}
enum Test: SelfDescriber {}
print(Test.descriptionOfSelf) // "Test"
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516013.html
標籤:IOS迅速苹果手机
