-1

好吧,我了解可选项和 nil 值的概念以及 swift 希望如何保护您的代码免受errors

Swift 擅长推理variables。但是为什么 swift 编译器不只接受一个声明的变量。

也就是说,为什么会

let unInitializedVariable: Int

如果我说,抛出错误或不允许

let unInitializedVariable: Int? = nil

然后编译器很高兴。如果说编译器推断第一条语句与后面的表达式相同,那会没有意义吗?有人可以解释一下。

4

1 回答 1

0

并不是编译器无法推断出来。它不想。类型安全意味着你得到你想要的类型。

诠释?和 Int 非常不同。Int 意味着你有一个值,Int? 意味着你可能有也可能没有价值。

使用 JSONDecoder,如果你有一个带有 Int 的结构,如果它的键和值丢失,你会得到一个错误。如果它是一个 Int?它不在乎它是否存在。诠释和诠释?看起来一样,但它们的工作方式非常不同。

于 2020-04-03T21:54:50.777 回答