这段代码在Swift 2.3中运行得很好,我不明白为什么我必须打开TestClass
来检查数字是否大于4.这是链接选项的全部要点,以节省额外的调用。
现在要做到这一点,我必须检查testClass != nil
(或使用if let
语句隐式展开),然后检查计数。
这真的是唯一的方法吗?
import UIKit
class testClass
{
var optionalInt:Int?
}
var test:testClass?
if test?.optionalInt > 4
{
}
答案 0 :(得分:5)
这不是一个错误。唉,这是故意的。比较(>
)中的选项的隐式展开已从语言中删除。
因此,现在的问题是>
左侧的内容是可选内容,您无法再将其直接与4
进行比较。你必须打开它并以某种方式获得Int。
答案 1 :(得分:4)
首先,您在哪里初始化test
var?当然,如果你不给它一个价值,它将是零!
关于可选链接,编写的问题是什么:
if let optionalInt = test?.optionalInt, optionalInt > 4
{
}
一如既往,安全>简洁。
答案 2 :(得分:0)
答案 3 :(得分:0)
这也可能在Guard语句中发生。 示例:
var playerLevels = ["Harry": 25, "Steve": 28, "Bob": 0]
对于playerLevels {
中的(playerName,playerLevel)guard playerLevels > 0 else {//ERROR !!
print("Player \(playerName) you need to do the tutorial again !")
continue
}
print("Player \(playerName) is at Level \(playerLevels)")
}