在Swift中是否有可能与可选项进行模式匹配?



我不太喜欢可选的if let语法,我想看看我是否能得到模式匹配的工作。我正在操场上尝试下面的代码,但没有看到println语句上的任何输出。我做错了什么?

let one:Int? = 1
switch one {
case .Some(let numeral):
    println("Caught a (numeral)")
default:
    println("Nothing to catch")
}

有点脱离上下文,但是:Playground不打印右列中的println()语句。您可以再次写入要读取的变量:

...
case .Some(let numeral):
    println("Caught a (numeral)")
    numeral
...

在这种情况下,您将看到{Some 2}

或者您可以打开助理编辑器(视图->助理编辑器->显示助理编辑器),读取Console output以读取println()的评估值。

编辑后Xcode 6 beta-5

使用Xcode 6 beta-5,你终于可以println(),你会看到文本在右列

是的,您可以使用下划线(_)来匹配和忽略任何值。

更简洁的方法是使用if case let,而不是切换。

if case let numeral? = one {
  print("Caught a (numeral)")
}

if case .Some(let numeral) = one {
  print("Caught a (numeral)")
}

要求Swift 2.0

最新更新