错误消息:条件绑定的初始化程序必须具有可选类型,而不是“()”

Error message: initialiser for conditional binding must have optional type, not '()'

我遇到错误:

initialiser for conditional binding must have optional type, not '()'.

使用Swift语言,代码如下:

if let result = brain.performOperation(operation)

我想我可以回答你的问题,但我不知道对你有多大帮助。

使用if let someVar = someOptional { }的方式是检查变量(someOptional)的值,看它是nil还是"value"。如果它不是 nil,那么 someVar 将被赋予 someOptional 的非 nil 值并执行 { } 之间的代码,它可以安全地引用 someVar,知道它不是 nil。如果 someOptional 为 nil,则 { } 中的代码将被绕过而不执行。

您在上面发表的评论表明 performOperation() 方法是这样的:

func performOperation(symbol:String) { 
  if let operation = knownOps[symbol] {
    opStack.append(operation)
  }
} 

此方法不 return 任何东西,或者更正式地说,它 return 无效又名 ()。 void,或者 () 不是一个值,也不是 nil。

所以当你有这个声明时

if let result = brain.performOperation(operation) { }

编译器抱怨,因为它期望 brain.performOperation(operation) return 要么是 nil 要么是一个值,但不是 void aka () 这正是方法 returns.

如果您仍然对可选值感到困惑,请务必尽可能多地阅读 Swift Language Reference。可选项是语言的重要组成部分,一旦你习惯了它们,你会发现它们非常宝贵。