我正在探索 Swift 并尝试编写一个函数来比较两个 Rank 值,方法是比较它们的原始值。但我收到错误消息:在调用 card().compareValue(card.Ace, card.King) 时缺少参数 'rawValue' 的参数
有什么想法吗?
enum card : Int {
case Ace = 1
case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
case King, Queen, Jack
func cardValue() -> String {
switch self {
case .Ace:
return "Ace"
case .King:
return "King"
case .Queen:
return "Queen"
case .Jack:
return "Jack"
default:
return String(self.rawValue)
}
}
func compareValue(val1: card, val2: card) -> String {
if val1.rawValue > val2.rawValue {
return "\(val1) is greater than \(val2)"
} else {
return "\(val1) is not greater than \(val2)"
}
}
}
card().compareValue(card.Ace, card.King) // error
最佳答案
问题出在 card()
对象的构造中,调用的目标:
card(). // and so on
您正在尝试构造一个 enum
而不指定其原始值。您可以通过提供它来修复它,就像这样
card(rawValue:0). // <<=== This is not a good fix!
但这不是一个好的解决办法。相反,您应该将 compareValue
设为 static
或独立函数:
static func compareValue(val1: card, _ val2: card) -> String
// ^
... // Note the underscore ----------+
card.compareValue(card.Ace, card.King) // Works
关于ios - Swift 中缺少参数错误的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37843306/