Swift   发布时间:2022-04-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了一旦答案明确,Swift中是否有一个运算符停止对多表达式条件语句的求值?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在某些编程语言中,除了简单的||之外还有另外两个运算符和&&从现在开始我称之为_orif和_andif的这些运算符可用于代替&&和||它们可能有助于提高效率并避免错误,因为一旦答案明确,有条件的评估就会停止.

例如,下面的表达式的评估将在中途停止(SELEctedSprite!= nil)为false:因此条件的其余部分将被忽略并且永远不会被评估,这将防止在这种情况下发生致命错误:致命错误:意外发现nil在展开一个Optional值时,它会在到达第二个表达式时上升,因为很明显nil不会响应Spriteowner().

if (SELEctedSprite != nil) &&
   (SELEctedSprite.Spriteowner().type == "Human")
{
   println("a human SELEcted")
}

我正在寻找替代&&在上面的代码片段中可以用来代替简单的&& operator,所以如果第一个表达式被评估为false表达式(SELEctedSprite等于nil),那么第二个表达式将被忽略(因为它对结果没有任何影响)

题:

有没有这样一个&&?操作符在swift?如果答案是否定的,

有没有更好的方法来做到这一点而不是像我在这里写的那样的嵌套if语句:

if (SELEctedSprite != nil)
{
    if (SELEctedSprite.Spriteowner().type == "Human")
    {
       println("a human SELEcted")
    }
}

我正在实现一个智能系统,其中包含很多if子句,并且大多数都太复杂了,添加一个新的if层来控制nils是一个真正的噩梦.

解决方法

你所描述的被称为短路,而Swift确实拥有它.例如:

let a : Int? = nil

if a != nil && a! == 1 {
    print("a is 1")
} else {
    print("a is nil")
}

你可以看到一个永远不会被打开的东西.我认为在你的情况下,Spriteowner()更有可能返回nil.解包可选值的Swifty方法是使用let … where …语法:

if let s = SELEctedSprite where s.Spriteowner().type == "Human" {
    println("a human SELEcted")
}

大佬总结

以上是大佬教程为你收集整理的一旦答案明确,Swift中是否有一个运算符停止对多表达式条件语句的求值?全部内容,希望文章能够帮你解决一旦答案明确,Swift中是否有一个运算符停止对多表达式条件语句的求值?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。