题:
当我可以检查值是否为零时,为什么Swift会使用类似选项的东西?从本质上讲,我想知道这种语言功能的用途是什么,我正在学习Swift atm,从初学者的角度来看,它似乎多余/无用.
PS:我来自Javascript.
码:
做一些像我这样的事情似乎很荒谬:
if let normalImage = imageFromFaceBook {
print(normalImage) // normalImage is a constant
} else {
print("There is no image")
}
Run Code Online (Sandbox Code Playgroud)
当我可以做的时候:
if (imageFromFacebook != nil) {
print(imageFromFacebook) // normalImage is a constant
} else {
print("There is no image")
}
Run Code Online (Sandbox Code Playgroud)
像我通常在Javascript中做的那样:
if (imageFromFacebook != null) {
print(imageFromFacebook) // normalImage is a constant
} else {
print("There is no image")
}
Run Code Online (Sandbox Code Playgroud)
我认为关键的区别在于,Optionals允许类型系统表达什么时候可能是零或绝对不会.在Javascript中,您无法表达"var x将永远不会被定义,因此无需在任何地方添加该检查",同样地,在Javascript中,您可能有一个期望具有值的var,并且忘记检查在某些情况下它是不确定的可能性.
Optionals将这种区别提升为类型系统中的实际类型,因此编译器可以检测(并警告您)何时在nil是必须考虑的可能性的情况下假定为非nil.类似地,编译器可以强制执行非可选类型,以永远不会将其设置为零值(这将违反期望非零值的相关代码的假设).
换句话说,如果没有Optionals,只有运行时检查才能确定某个值是否为零(无法知道).在Swift中,使用Optionals,类型本身可以指定是否必须考虑nil,因此编译器可以在构建时或甚至在您键入时验证安全性.
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |