Swift 不等于、强制展开和空格

Swift Not Equals, Forced Unwrap, and Whitespace

我已经享受 Swift 一段时间了,但我发现一种语法问题非常严重。

从以下假设开始:

let foo : String = ""

这是一个相当简单的检查:

if foo!="value" {

但是,唉,它不会编译。编译器抱怨试图打开一个不是可选的值。然后我将该行更改为:

if foo != "value {

编译器很满意,代码的行为符合预期。这是一个重要的空白案例,我对此并不满意。我怀疑在某些情况下,这可能会编译并且表现出与我的意图相反的情况。我应该使用替代语法来避免此类错误吗?

替代语法是在中缀运算符周围放置空格。他们是必需的。没有空格,它被视为前缀或后缀运算符。对于空格,它是一个中缀运算符。 Swift 对此非常一致。我知道你意识到这就是正在发生的事情;我只是不相信有任何解决方法,任何治疗方法都比疾病本身更糟糕(我想不出任何这可能导致现实世界错误的例子)。

如果没有冲突,

Swift 将是宽容的,例如允许 1+1,但您也不应该这样做。我相信好的 Swift 风格就是把空格放进去。是的,这是一个重要的空格。这里的空格很重要,就像你不能说 structFoo 当你想说 struct Foo.