![](/img/trans.png)
[英]How can you extract associated values from a specific instance of an enum's case?
[英]How can you do a simple inline test for an enumeration's case that has associated values you don't care about?
給出以下代碼:
class Item{}
func foo(item:Item){}
enum SelectionType{
case single(resultsHandler:(Item)->Void)
case multi(resultsHandler:([Item])->Void)
}
var selectionType:SelectionType = .single(resultsHandler:foo)
// This line won't compile
let title = (selectionType == .single)
? "Choose an item"
: "Choose items"
您如何更新不會編譯的部分?
三元運算符不能用於具有關聯值的枚舉,因為經典的相等運算符不能與它們一起使用。 您必須使用模式匹配,或者if case
語法:
let title: String
if case .single = selectionType {
title = "Choose an item"
} else {
title = "Choose items"
}
我不知道是否有直接的方法可以解決您的需求。
enum SelectionType{
case single(resultsHandler:(Item)->Void)
case multi(resultsHandler:([Item])->Void)
var title : String {
let text : String
switch self {
case .single(_):
text = "Choose an item"
case .multi(_):
text = "Choose items"
}
return text
}
}
var title = selectionType.title
if case .single(_) = selectionType {
print("Choose an item")
}
else {
print("Choose items")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.