Geo*_*rge 3 optional ios swift
我可以在Swift中创建一个普通变量(我的意思是一个非可选的)并nil在应用程序生命周期中为它或稍后分配一个值,让它成为nil?
它让我感到困惑,因为与传统的强大编程语言(如Java和C#)相比,它有点奇怪.
不,这不可能通过设计.文档摘录解释了原因:
选项的概念在C或Objective-C中不存在.Objective-C中最接近的是从一个方法返回nil的能力,否则返回一个对象,nil意味着"没有有效的对象."但是,这仅适用于对象 - 它不适用于结构,基本C类型或枚举值.对于这些类型,Objective-C方法通常返回一个特殊值(例如NSNotFound)来指示缺少值.此方法假定方法的调用者知道有一个特殊值要测试并记得检查它.Swift的选项让你可以指出任何类型都没有值,而不需要特殊的常量.
你正在将选项描述为一件坏事,而我在语言中更多地欣赏这些功能,因为它可以防止大多数空指针异常错误.
另一个优点是,当一个函数可以返回一个非值(对象C中的引用类型为n,整数为-1等)时,您不必从可能值的范围中选择一个值,即变量某种类型可以有.没有提到调用者和函数/方法必须遵循的约定.
最后,如果您在代码中使用了太多问题和惊叹号,那么您应该考虑选项是否真的适合该问题(感谢@David提示),或者更频繁地利用可选绑定真正需要选择权的情况.
建议阅读:可选项
附录
提示:我经常看到在声明变量的情况下使用选项,但无法在上下文中初始化.非可选的可变变量不需要在同一行中声明和初始化 - 允许延迟初始化,前提是该变量在初始化之前未使用.例如:
var x: Int // Variable declared here
for var counter = 0; counter < 10; ++counter {
println(counter)
}
var array = [1, 2, 3]
// ... more lines of code NOT using the x variable
x = 5 // Variable initialized here
print(x)
Run Code Online (Sandbox Code Playgroud)
希望此功能允许您从代码中删除多个选项...
| 归档时间: |
|
| 查看次数: |
5239 次 |
| 最近记录: |