gpt4 book ai didi

arrays - Swift - 访问 nil 不会崩溃

转载 作者:可可西里 更新时间:2023-11-01 01:35:49 27 4
gpt4 key购买 nike

我注意到 swift 中有一个奇怪的行为。以下代码将按预期打印“未找到”。

import Cocoa

var array = [["one":"1"]]

for element in array {
if let check = element["two"] {
print(check)
} else {
print("Not found")
}
}

稍微修改一下代码

import Cocoa

var array : [AnyObject]?
array = [["one":"1"]]

for element in array! {
if let check = element["two"] {
print(check)
} else {
print("Not found")
}
}

将打印“nil”——这不是我所期望的,因为我认为 nil 是“未设置”而不是可打印对象。

有什么我想念的吗?谢谢!

最佳答案

在第二种情况下,你实际上是在创建一个嵌套的可选,这通常不是一个好主意(它只会导致困惑,我不知道为什么编译器坦率地允许它)。如果你输入行:

let foo = element["two"]

并检查 foo 的类型,您会看到它是 AnyObject?!。所以它是一个可选的,没有包含在可选中的值。这具有使您的 if/let 语句解开第一个可选项以提供第二个可选项的效果,即 nil

关于arrays - Swift - 访问 nil 不会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37423862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com