Function 在Swift的内联条件表达式中调用函数
我尝试使用内联if条件,如下所示:Function 在Swift的内联条件表达式中调用函数,function,swift,null,inline,Function,Swift,Null,Inline,我尝试使用内联if条件,如下所示: topDisplay.text!.rangeOfString(".") != nil ? call function A : call function B 这里的想法是,如果topDisplay.text中有“”然后调用函数A,否则调用函数B。如果未找到“.”,则方法“rangeOfString”返回nil。因此,我想知道是否可以在内联条件表达式中检查nil并同时进行函数调用。假设您将对实际函数的调用放在其中,则您的代码是正确的,即: func funct
topDisplay.text!.rangeOfString(".") != nil ? call function A : call function B
这里的想法是,如果
topDisplay.text中有“
”
然后调用函数A,否则调用函数B。如果未找到“.”,则方法“rangeOfString
”返回nil。因此,我想知道是否可以在内联条件表达式中检查nil并同时进行函数调用。假设您将对实际函数的调用放在其中,则您的代码是正确的,即:
func functionA() -> String { return "A" }
func functionB() -> String { return "B" }
topDisplay.text?.rangeOfString(".") != nil ? functionA() : functionB()
如果收到错误消息,最可能的原因是functionA
和functionB
返回不同的类型:
func functionA() -> String { return "A" }
func functionB() -> Int { return 1 }
// error: could not find an overload for '!=' that accepts the supplied arguments
topDisplay.text?.rangeOfString(".") != nil ? functionA() : functionB()
在经典的Swift错误消息样式中,这会给您一个关于有效的错误=代码>比较与A
和B
返回不兼容类型的问题无关
但是,如果您没有在代码中显示结果的赋值,我怀疑您实际上是想运行这些函数以获得副作用,而不是返回值。如果是这种情况,请不要这样做。?:
运算符用于作为表达式计算两种可能性。如果需要副作用,请使用If
:
if topDisplay.text?.rangeOfString(".") != nil {
sideEffectfulFunctionA()
}
else {
sideEffectfulFunctionB()
}
topDisplay.text!可能重复!。字符串(“.”)的范围?functionA():上面的表达式functionB()无法编译。是否应该更改任何内容?第一件事是使用rangeOfString(“.”)=零
正如您在回答上一个问题时所建议的那样……很抱歉让您感到困惑,Martin,我之前的评论应该是topDisplay.text!。范围字符串(“.”)无functionA():functionB()这篇文章也被更正了。@Yao你可能在某个地方有输入错误,看。我实际上希望functionA和functionB做一些事情,而不仅仅是返回字符串。事实上,正如我的代码所示,我没有给任何字符串分配任何返回值。我只想用一行代码来表达if/else语句。看来这里不可能,谢谢!