Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 在Swift的内联条件表达式中调用函数_Function_Swift_Null_Inline - Fatal编程技术网

Function 在Swift的内联条件表达式中调用函数

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

我尝试使用内联if条件,如下所示:

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语句。看来这里不可能,谢谢!