在Apple的“A swift Tour”中,他们有这段代码:
enum OptionalValue<T> {
case None
case Some(T)
}
var possibleInteger: OptionalValue<Int> = .None
possibleInteger = .Some(100)
你怎么得到100?如果possibleInteger == 100
内部的值为100,则无法possibleInteger
进行测试。我知道你可以把函数放在枚举中,但你不能有变量。也许我理解错误的枚举......
如果我在声明可选(Optional
)时点击var x:Optional<Int>
,我可以找到
enum Optional<T> : Reflectable, NilLiteralConvertible {
case None
case Some(T)
init()
init(_ some: T)
/// Haskell's fmap, which was mis-named
func map<U>(f: (T) -> U) -> U?
func getMirror() -> MirrorType
static func convertFromNilLiteral() -> T?
}
但我不明白这是什么意思。帮助
答案 0 :(得分:2)
您可以使用switch
语句获取值as described here。相关位:
...可以提取相关值作为开关的一部分 声明。您将每个关联值提取为常量(使用 let前缀)或变量(带有var前缀),用于 开关箱的主体:
对于您的情况,您需要以下内容:
switch possibleInteger {
case .Some(let value):
println(value)
case .None:
println("<None>")
}