错误消息:条件绑定的初始化程序必须具有可选类型,而不是“()”
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。可选项是语言的重要组成部分,一旦你习惯了它们,你会发现它们非常宝贵。
我遇到错误:
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。可选项是语言的重要组成部分,一旦你习惯了它们,你会发现它们非常宝贵。