我正在寻找Swift编程语言,但遇到一个问题,我无法区分这是否是Lauguage的问题(我使用的是Xcode版本6.1(6A1052c)):
enum Rank: Int {
case Ace = 1
case Two, Three, Four, Five
func simpleDescription() -> String {
switch self {
case .Ace: return "Ace"
default: return String(self.rawValue)
}
}
}
var rank: Rank?
rank = Rank(rawValue: 2)
println(rank.rawValue)
在最后一行中,它将引发错误:'Rank?' does not have a member named
rawValue``
但是,如果将变量声明为var rank: Rank
,并将其修改rank = Rank(rawValue: 2)
为rank = Rank(rawValue: 2)!
,则它可以通过且不会出现错误。
Rank?
在您的情况下,从rawValue实例化枚举将返回该枚举的可选。为了访问可选枚举的属性,您必须将其解包,以获取Rank
。
var rank: Rank?
rank = Rank(rawValue: 2)
if(rank != nil){
println(rank!.rawValue)
}
您也可以输入RankRank
代替Rank?
var rank: Rank
rank = Rank(rawValue: 2)! //make sure you know this will always return a Rank. If it's nil your program will crash
println(rank.rawValue)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句