【发布时间】:2015-12-19 05:00:36
【问题描述】:
首先,我相信我的问题与那些关于“什么是 swift 中的可选”的问题不同。因为我问的是为什么我能做到这一点,而不是这是什么。
我是 swift 新手。当我今晚学习这门美妙的语言时,我遇到了一个我从未在编程语言中看到过这个标记的问题——“?”。我搜索了一段时间。我现在知道什么是可选绑定了。
但现在我有一个新问题。 当我想声明一个不是可选的变量时。我可以写这样的语法:
var friend: String
但我不会写:
var friend: String = nil
要声明一个为零的变量,我只能使用可选的:
var friend: String? = nil
让我们看看第一段代码。当新变量friend刚刚被声明时,它的值是nil,对吧?因为我没有给它赋值。但是根据 optional 的定义,像第二段和第三段代码一样,我们不能将 nil 分配给非可选变量。
所以我的问题是为什么我可以声明一个没有可选标记但没有初始值的变量。这个问题可能很简单,但我真的不知道为什么会这样。
提前致谢!
【问题讨论】:
-
第一个不为零。它是一个未初始化的变量。就像 Marc 所说的,如果你尝试运行第一个,你会得到一个编译时错误。但是,如果它是可选的。它将允许您运行它,因为它的值为 nil。