Swift:逻辑not运算符不工作
这段代码打印两次“false”:Swift:逻辑not运算符不工作,swift,Swift,这段代码打印两次“false”: println(levelController?.died) println(!levelController?.died) 我不明白为什么,levelController是实例化的,而Dead属性是在levelController中声明的,如下所示: var died = false 有人能告诉我我可能做错了什么吗?这是斯威夫特,不是客观的C levelController?不是布尔值。它是可选的布尔值。它可以是真的、假的,也可以是零。第一个println
println(levelController?.died)
println(!levelController?.died)
我不明白为什么,levelController是实例化的,而Dead属性是在levelController中声明的,如下所示:
var died = false
有人能告诉我我可能做错了什么吗?这是斯威夫特,不是客观的C
levelController?不是布尔值。它是可选的布尔值。它可以是真的、假的,也可以是零。第一个println打印为false。应用于可选项的逻辑not运算符,如果可选项不是nil,则返回false;如果可选项是nil,则返回true。正如它在C中应用于指针时所做的那样 这是迅速的,不是客观的
levelController?不是布尔值。它是可选的布尔值。它可以是真的、假的,也可以是零。第一个println打印为false。应用于可选项的逻辑not运算符,如果可选项不是nil,则返回false;如果可选项是nil,则返回true。正如它在C中应用于指针时所做的那样 作为一个完整的示例,您的代码:
class Controller {
var died: Bool = false
}
var levelController: Controller? = Controller()
println(levelController?.died)
println(!levelController?.died)
产出如下:
Optional(false)
false
代码的第一个版本levelController?.died
使用选项链接、展开levelController并访问died
属性。这解释了为什么输出是可选的(false)。您通常会按如下方式使用它:
if let died = levelController?.died {
if (died) {
println("I died")
}
}
var levelController: Controller? = nil
if let
语句打开此可选值
代码的第二个版本!levelController?.died
测试给定的可选值是否为零。您会注意到,将dead
更改为true或false没有任何区别
但是,将实例化更改如下:
if let died = levelController?.died {
if (died) {
println("I died")
}
}
var levelController: Controller? = nil
结果是
!levelController?已死亡
变为真。这不是一段非常实用的代码 作为一个完整的示例,您的代码:
class Controller {
var died: Bool = false
}
var levelController: Controller? = Controller()
println(levelController?.died)
println(!levelController?.died)
产出如下:
Optional(false)
false
代码的第一个版本levelController?.died
使用选项链接、展开levelController并访问died
属性。这解释了为什么输出是可选的(false)。您通常会按如下方式使用它:
if let died = levelController?.died {
if (died) {
println("I died")
}
}
var levelController: Controller? = nil
if let
语句打开此可选值
代码的第二个版本!levelController?.died
测试给定的可选值是否为零。您会注意到,将dead
更改为true或false没有任何区别
但是,将实例化更改如下:
if let died = levelController?.died {
if (died) {
println("I died")
}
}
var levelController: Controller? = nil
结果是
!levelController?已死亡
变为真。这不是一段非常实用的代码 您可以像这样创建自己的not操作符:
let not = (!)
现在我们可以指定一个bool来测试这个:
let dead = false
if not(dead) {
print(dead)
// Code
} else {
// Code
}
您可以创建自己的not运算符,如下所示:
let not = (!)
现在我们可以指定一个bool来测试这个:
let dead = false
if not(dead) {
print(dead)
// Code
} else {
// Code
}
好的,println(levelController?.died!=true)打印true,我明白了。谢谢如何在不进行比较的情况下使其成为真的?请参见苹果公司的答案识别问题OK,println(levelController?.died!=true)prints真的,我明白了。谢谢如何在不进行任何比较的情况下使其成为真实的想法?请参阅苹果公司的答案,了解如何在不进行任何比较的情况下使其成为真实的想法Codester如何在没有任何比较的情况下实现这一点编码员