Swift 如何处理 if 语句?
How does Swift handle if statements?
如果我有语句:
if object != nil && object.property == 2 {
//do something
}
if语句一发现object = nil
就中断了吗?
答案是肯定的。
尝试起来很简单 - 见下文 - 但请注意,你写的测试不会工作 - 非可选不能 nil
,所以你必须打开它来测试 .property
.
struct MyObj {
var property: Int
}
var object: MyObj? = nil
if object != nil && object!.property == 2 {
print("Not nil")
} else {
print("Nil") // Prints - would have crashed if test fully evaluated
}
object = MyObj(property: 2)
if object != nil && object!.property == 2 {
print("Not nil") // Prints
} else {
print("Nil")
}
是
当您使用 AND &&
运算符连接条件列表 C[0]
...C[n]
时,运行时会按顺序 求值 每个条件如果找到C[i]
个条件false
,那么整个表达式的求值确实结束,判断为false
.
let c0 = true
let c1 = false
let c2 = true
if c0 && c1 && c2 {
print("Hello world")
}
在这种情况下,只有 c0
和 c1
会被评估,整个表达式将被解释为 false
.
你可以在Playground中自己测试一下。
c0 || c1 || c2
对称地,如果您将一个表达式定义为多个子句的 OR ||
串联,则整个表达式将被解释为 true
(子句的求值会停止)找到第一个真实条件。
如果我有语句:
if object != nil && object.property == 2 {
//do something
}
if语句一发现object = nil
就中断了吗?
答案是肯定的。
尝试起来很简单 - 见下文 - 但请注意,你写的测试不会工作 - 非可选不能 nil
,所以你必须打开它来测试 .property
.
struct MyObj {
var property: Int
}
var object: MyObj? = nil
if object != nil && object!.property == 2 {
print("Not nil")
} else {
print("Nil") // Prints - would have crashed if test fully evaluated
}
object = MyObj(property: 2)
if object != nil && object!.property == 2 {
print("Not nil") // Prints
} else {
print("Nil")
}
是
当您使用 AND &&
运算符连接条件列表 C[0]
...C[n]
时,运行时会按顺序 求值 每个条件如果找到C[i]
个条件false
,那么整个表达式的求值确实结束,判断为false
.
let c0 = true
let c1 = false
let c2 = true
if c0 && c1 && c2 {
print("Hello world")
}
在这种情况下,只有 c0
和 c1
会被评估,整个表达式将被解释为 false
.
你可以在Playground中自己测试一下。
c0 || c1 || c2
对称地,如果您将一个表达式定义为多个子句的 OR ||
串联,则整个表达式将被解释为 true
(子句的求值会停止)找到第一个真实条件。