IF 条件错误中的 Swift3 选项链接?
Swift3 optionals chaining in IF conditions bug?
此代码在 Swift 2.3 中运行良好,我不明白为什么我必须打开 TestClass
来检查数字是否大于 4。这就是链接可选值的全部意义所在,以节省额外的通话。
现在要完成这项工作,我必须检查是否 testClass != nil
(或使用带 if let
语句的隐式解包),然后检查计数。
这真的是唯一的方法吗?
import UIKit
class testClass
{
var optionalInt:Int?
}
var test:testClass?
if test?.optionalInt > 4
{
}
这不是错误。唉,这是故意的。比较中可选值的隐式解包 (>
) 已从语言中删除。
所以,现在的问题是 >
左边的是可选的,你不能再直接将它与 4
进行比较。您必须以一种或另一种方式打开它并获得一个 Int。
首先,你在哪里初始化你的 test
变量?当然不赋值就是nil!
关于可选链接,写作有什么问题:
if let optionalInt = test?.optionalInt, optionalInt > 4
{
}
一如既往,安全 > 简洁。
从 Swift 3 中删除了可选的比较运算符。
SE-0121
你需要这样写:
if test?.optionalInt ?? 0 > 4
{
}
这也可能发生在 Guard 声明中。
示例:
var playerLevels = ["Harry": 25, "Steve": 28, "Bob": 0]
for (playerName, playerLevel) in playerLevels {
guard playerLevels > 0 else {//ERROR !!
print("Player \(playerName) you need to do the tutorial again !")
continue
}
print("Player \(playerName) is at Level \(playerLevels)")
}
此代码在 Swift 2.3 中运行良好,我不明白为什么我必须打开 TestClass
来检查数字是否大于 4。这就是链接可选值的全部意义所在,以节省额外的通话。
现在要完成这项工作,我必须检查是否 testClass != nil
(或使用带 if let
语句的隐式解包),然后检查计数。
这真的是唯一的方法吗?
import UIKit
class testClass
{
var optionalInt:Int?
}
var test:testClass?
if test?.optionalInt > 4
{
}
这不是错误。唉,这是故意的。比较中可选值的隐式解包 (>
) 已从语言中删除。
所以,现在的问题是 >
左边的是可选的,你不能再直接将它与 4
进行比较。您必须以一种或另一种方式打开它并获得一个 Int。
首先,你在哪里初始化你的 test
变量?当然不赋值就是nil!
关于可选链接,写作有什么问题:
if let optionalInt = test?.optionalInt, optionalInt > 4
{
}
一如既往,安全 > 简洁。
从 Swift 3 中删除了可选的比较运算符。 SE-0121
你需要这样写:
if test?.optionalInt ?? 0 > 4
{
}
这也可能发生在 Guard 声明中。 示例:
var playerLevels = ["Harry": 25, "Steve": 28, "Bob": 0]
for (playerName, playerLevel) in playerLevels {
guard playerLevels > 0 else {//ERROR !!
print("Player \(playerName) you need to do the tutorial again !")
continue
}
print("Player \(playerName) is at Level \(playerLevels)")
}