Aeo*_*Neo 12 iphone variables optional ios swift
我刚刚开始学习Swift,最近发现了
"正常"变量(缺少更好的名称):
例如: var test1: String
"可选"变量
例如: var test2: String?
"隐式解包的选项"
例如: var test3: String!
懒惰的变量
例如: lazy var test4: String
我的理解是这样的:
当变量可能会或可能不会在将来从初始化开始的点初始化时,使用"可选"变量(?)
保证初始化变量时,使用"隐式解包选项"(!)
Optionals可以通过"Forced Unwrapping"转换为Implicitly Unwrapped Optionals
例如: let possibleString: String? = "Hello"
println(possibleString!)
在初始化之前不需要设置某些东西时使用"惰性变量"(似乎这些变量可以与(?)或(!)一起使用)
因此,我的问题是:
我什么时候使用选项1 - 没有变量?没有!
我什么时候用"懒"
我读"懒"经常用于单身人士 - 为什么?
我对Java和C++术语有最丰富的经验,如果这有助于我的回答背景.
编辑:这是我找到的所有内容(主要问题是"正常"与"隐式解包的选项":
不完全是这样。
所有变量必须在首次使用之前初始化,并且所有类/结构存储的属性必须在各自的初始化程序中分配值。可选项并不是允许在某个时刻未初始化,而是允许不包含任何值,这由 表示nil,这仍然是此类变量的完美初始化声明。因此,如果在初始化时无法知道某些内容,那么您可能会使用某种可选选项(例如视图的委托)。
隐式解包选项是变量可能为空的情况的一种简写,但我们绝对确定当我们真正使用它时,它将保存一个实际值(典型的例子是视图控制器中的一个属性,它保存对一个看法)。
强制解包不会将可选值转换为隐式解包可选值,而是为您提供一个存在的值(如果该值存在)(即,如果不存在可选值nil),如果不存在则抛出异常。
当您希望将其初始化推迟到稍后阶段(当该属性实际上是第一次使用时)时,可以使用惰性属性。通常的情况是,如果您需要访问昂贵的资源来执行此操作(从磁盘加载大文件,通过网络下载等),特别是如果可能存在根本不会使用此类属性的情况(为什么要加载如果我们不会使用它,它可能会从磁盘中取出?)。
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |