Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/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中为它赋值,以便以后使用吗?_Swift_Variables_Swift Optionals - Fatal编程技术网

为什么可以';我声明了一个变量,不在swift中为它赋值,以便以后使用吗?

为什么可以';我声明了一个变量,不在swift中为它赋值,以便以后使用吗?,swift,variables,swift-optionals,Swift,Variables,Swift Optionals,我理解optionals和nil值的概念,以及swift如何确保您的代码不出现错误 斯威夫特擅长推断变量。但是为什么swift编译器不接受一个声明的变量呢 也就是说,为什么会这样 let unInitializedVariable:Int 抛出一个错误,如果我说 let unInitializedVariable: Int? = nil 那么编译器就高兴了。如果编译器推断出第一个语句与后面的表达式相同,这是否毫无意义?有人能解释一下吗 并不是编译器不能推断出它。它不想。类型安全意味着您可以获

我理解optionals和nil值的概念,以及swift如何确保您的代码不出现
错误

斯威夫特擅长推断
变量
。但是为什么swift编译器不接受一个声明的变量呢

也就是说,为什么会这样

let unInitializedVariable:Int
抛出一个错误,如果我说

let unInitializedVariable: Int? = nil

那么编译器就高兴了。如果编译器推断出第一个语句与后面的表达式相同,这是否毫无意义?有人能解释一下吗

并不是编译器不能推断出它。它不想。类型安全意味着您可以获得所需的类型

智力?和Int是非常不同的。Int表示你有一个值,Int?表示您可能有值,也可能没有值


使用JSONDecoder,如果您有一个包含Int的结构,如果它的键和值丢失,您将得到一个错误。如果是Int?它不在乎它是否在那里。Int和Int?看起来是一样的,但它们的工作方式非常不同。

您需要在代码的后面设置
未初始化的变量。检查这个