ios - 为什么不写optional mark就可以声明一个变量?

标签 ios swift option-type

首先,我认为我的问题与那些关于“swift 中什么是可选的”的问题不同。因为我问的是为什么我能做到这一点,而不是这是什么。

我是 swift 的新手。当我今晚学习这门神奇的语言时,我遇到了一个问题,我从来没有在编程语言中看到过这个标记——“?”。我搜索了一会儿。我现在知道什么是可选绑定(bind)了。

但现在我有一个新问题。 当我想声明一个不是可选的变量时。我可以写这个语法:

var friend: String

但是我不会写:

var friend: String = nil

要声明一个 nil 变量,我只能使用可选的:

var friend: String? = nil

让我们看第一段代码。刚刚声明新变量friend时,它的值是nil,对吧?因为我没有赋予它任何值(value)。但是根据optional的定义,像第二段和第三段代码,我们不能给非optional变量赋nil。

所以我的问题是为什么我可以声明一个没有可选标记但没有初始值的变量。这个问题可能很简单,但我真的不知道为什么会这样。

提前致谢!

最佳答案

Swift 允许你声明一个非可选的变量或常量而无需在声明中对其进行初始化,但你必须在使用前为其赋值。变量或常量的值不是 nil(非可选值永远不能为 nil)——它只是没有定义的值。基本上你是说你稍后会给它一个值,可能基于计算结果或 if 语句。

如果您尝试使用非可选变量或常量而不先为其赋值,Swift 将给您一个编译时错误。

关于ios - 为什么不写optional mark就可以声明一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34367421/

相关文章:

ios - 如何从应用内购买 transaction_id 中获取 apple id

swift - 如何在 Swift 中更改当天的小时和分钟?

ios - UIView 扩展获取 UITableViewCell?

swift - 是否需要将变量 'possibleIntegerValue' 设置为 'optional Int(Int?)',或者将 'possibleIntegerValue' 设置为类型 'Int' 是否可以?

java - Null-Check & isPresent - 名称不同但问题相同?

ios - _UIButtonBarStackView : breaking constraint when becomeFirstResponder sent

iphone - 如何使用 iPhone 应用程序定位任何手机号码

ios - 支持所有 iPhone 设备所需的图像尺寸

ios - 删除 UITableViewCell 之间的灰线

java - Optional.flatMap 和 Optional.map 有什么区别?