为啥 Swift 的三元运算符对空格如此挑剔?
Posted
技术标签:
【中文标题】为啥 Swift 的三元运算符对空格如此挑剔?【英文标题】:Why is Swift's ternary operator so picky about whitespace?为什么 Swift 的三元运算符对空格如此挑剔? 【发布时间】:2016-04-05 19:58:50 【问题描述】:问题很简单,就是找不到答案!
为什么不
return x == 0? "" : "Hello"
编译但是
return x == 0 ? "" : "Hello"
会吗?
这真的很奇怪,因为所有其他运算符都不需要额外的空格。例如
let x = 1+1
let y = 1 + 1
都是一样的。
我认为这与可选项有关。但是当你在变量上使用?
运算符时,它必须像这样使用:
let s: String? = nil
let x = s?.startIndex
我的意思是它必须跟随另一个运营商,对吧?
【问题讨论】:
【参考方案1】:我认为这与可选项有关。
确实如此。 operators 上的文档说:
规则有一个警告[关于运算符周围的空格]。如果
!
或?
预定义运算符左侧没有空格,则将其视为后缀运算符,无论右侧是否有空格。要将?
用作可选链接运算符,它的左侧不能有空格。要在三元条件 (?
:
) 运算符中使用它,它的两边必须有空格。
【讨论】:
“在三元条件中使用它”可能会令人困惑。 “它”是三元条件运算符本身的?
。 TLDR,您实际上可以在三元组中使用可选链。【参考方案2】:
是的,我很确定(如您所料)问题出在可选选项上。
我更喜欢这样写我的三元运算符...
let num = (isTrue) ? (1) : (0)
当然,您可以选择括号中的内容,无论是否只是文字(如图所示)。
【讨论】:
以上是关于为啥 Swift 的三元运算符对空格如此挑剔?的主要内容,如果未能解决你的问题,请参考以下文章