问题很简单,但我找不到答案!
为什么没有
return x == 0? "" : "Hello"
编译但是
return x == 0 ? "" : "Hello"
确实
这真的很奇怪,因为所有其他运营商都不需要额外的空白区域。 e.g。
let x = 1+1
let y = 1 + 1
是一样的。
我认为这与选项有关。但是当你对一个变量使用?
运算符时,它必须像这样使用:
let s: String? = nil
let x = s?.startIndex
我的意思是它必须跟随另一个操作员,对吗?
答案 0 :(得分:7)
我认为这与选项有关。
确实如此。 operators上的文档说:
规则[关于运营商周围的空白]有一点需要注意。如果
!
或?
预定义运算符在左侧没有空格,则将其视为后缀运算符,而不管它是否在右侧有空格。要使用?
作为可选链接运算符,它必须在左侧没有空格。要在三元条件(?
:
)运算符中使用它,它必须在两边都有空格。
答案 1 :(得分:0)
是的,我非常确定(正如您所假设的)问题在于选项。
我更喜欢写这样的三元运算符......
let num = (isTrue) ? (1) : (0)
当然,您可以选择括号中的内容,无论它是否只是文字(如图所示)。