我现在已经享受了一段时间的Swift,但我发现了一种令人难以置信的问题。
首先假设:
let foo : String = ""
这是一个相当简单的检查:
if foo!="value" {
但是,唉,它不会编译。编译器抱怨尝试解包不是可选的值。然后我将该行更改为:
if foo != "value {
编译器很高兴并且代码按预期运行。这是一个重要的空白案例,我不满足于此。我怀疑有些情况可能会编译并且表现与我的意图相反。我是否应该使用替代语法来避免此类错误?
答案 0 :(得分:3)
替代语法是在中缀运算符周围添加空格。它们是必需的。如果没有空格,则将其视为前缀或后缀运算符。对于空格,它是一个中缀运算符。斯威夫特对此非常一致。我知道你意识到这是正在发生的事情;我只是不相信它有任何解决方法,任何治疗都会比疾病更糟糕(我不能提出任何可能导致现实世界的错误的例子)
如果没有冲突,斯威夫特将会原谅,例如允许1+1
,但你也不应该这样做。我相信好的Swift风格就是把空间放进去。是的,这是一个重要的空白案例。这里的空格非常重要,正如您所指的那样structFoo
struct Foo
。