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

时间:2015-09-25 05:55:17

标签: swift types optional initializer

我收到错误:

  

条件绑定的初始化必须具有可选类型,而不是'()'。

使用Swift语言,下面是代码:

if let result = brain.performOperation(operation)

1 个答案:

答案 0 :(得分:0)

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

使用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)
  }
} 

此方法不返回任何内容,或者更正式地返回void aka ()。 void,或()不是值,也不是nil。

所以当你有这个陈述时

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

编译器抱怨因为它期望brain.performOperation(operation) 返回nil或value,但不返回void (),这正是方法返回的内容。

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