Swift 检查变量是否为nil或满足某些条件
这种方法足够快吗?(里面有我不喜欢的东西): 或者再举一个例子:Swift 检查变量是否为nil或满足某些条件,swift,Swift,这种方法足够快吗?(里面有我不喜欢的东西): 或者再举一个例子: while i < index ?? i + 1 { ... i += 1 } 而我
while i < index ?? i + 1 {
...
i += 1
}
而我
这就是你想要的吗?你说得对:
guard index ?? 1 > 0 else { ...
是简洁的,但它似乎不正确,因为您必须选择一个默认值才能使条件工作,这似乎有点混乱
你可以完全按照你描述的那样写:
guard index == nil || index! > 0 { ...
这是安全的,因为|
语句短路并防止强制展开崩溃,但它仍然有一个强制展开,一些工具(如SwiftLint)会将其标记为一个问题
第三种选择是使用可选形式的map
:
guard index.map({ $0 > 0 }) ?? true { ...
这里,只有索引
有值时才会执行闭包,否则它将返回nil
。然后使用?
为nil
情况提供所需的true
结果。它的优点是不使用“力展开”(force unwrap)或“模糊”(kludge)值,但读取起来有点困难
同样,对于第二个示例,您的选择是: 选择使其工作的默认值:
while i < index ?? i + 1 { ...
使用映射
和??
:
while index.map({ i < $0 }) ?? true { ...
可以写为:
if index == nil || index == 7 { ...
否。如果变量==nill | |变量!==(你的情况){做点什么}
while index == nil || i < index! { ...
while index.map({ i < $0 }) ?? true { ...
if index ?? 7 == 7 { ...
if index == nil || index == 7 { ...