【发布时间】:2016-02-14 15:10:25
【问题描述】:
可以通过这种方式隐式展开可选选项。
if let foo = foo {
print("foo")
} else {
print("bar")
}
我在 Playground 中练习,我不明白为什么我不能使用三元运算符来完成上述操作。
let foo = foo ? print("foo") : print("bar")
// or
var result:String = (let foo = foo ? print("foo") : print("bar"))
我认为这对于 Swift 来说是完全正常的,尽管很尴尬,因为三元运算会计算为表达式。我怀疑let foo = foo 本身就是 Swift 必须处理的表达式,但它来自像我这样的 Swift 新手。
【问题讨论】:
-
我相信你的第一个例子叫做
Optional Binding。隐式展开是someVar!。 -
而您的第二个示例不起作用的原因是因为您在自己的初始值中使用了
foo,因此出现错误:Variable used within its own initial value。 -
无论如何你想用 'let foo = foo' 达到什么目的
-
@Eendje 我在想可选绑定是否适用于三元运算符,
true或false的结果将被返回/分配。