例如,下面的表达式的评估将在中途停止(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? = nilif 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中是否有一个运算符停止对多表达式条件语句的求值?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)