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

时间:2014-06-06 10:40:36

标签: swift

我不太喜欢带有选项的if let语法,而且我试图看看我是否可以让模式匹配工作。我在操场上尝试以下代码,但没有在println语句中看到任何输出。我做错了什么?

let one:Int? = 1

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

3 个答案:

答案 0 :(得分:5)

有点脱离背景,但是: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(),您将看到右栏中的文字。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

使用您的示例做一个更简洁的方法就是使用如果允许,而不是切换。

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

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

需要Swift 2.0