我不太喜欢带有选项的if let
语法,而且我试图看看我是否可以让模式匹配工作。我在操场上尝试以下代码,但没有在println
语句中看到任何输出。我做错了什么?
let one:Int? = 1
switch one {
case .Some(let numeral):
println("Caught a \(numeral)")
default:
println("Nothing to catch")
}
答案 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