Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 检查变量是否为nil或满足某些条件_Swift - Fatal编程技术网

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 { ...