我理解可选项的重要性(允许代码运行,如果收到nil则不会崩溃)但是我不明白的是 - 如果那是我的原因需要指定nil。
如果我选择不归还任何东西,那与返回Nil一样吗?这也引出了一个问题,为什么我的开关需要详尽无遗?如果错误只返回Nil。
我理解在从数组中提取(例如)信息时更多地使用可选项 - 如果输入的索引不存在/未找到...但是如何找不到结果不同于没有返回任何东西。
示例:
func example(#name: Int) -> Int? {
case 1:
// do x
case 2:
// do y
return y
}
或者甚至,如果它需要一个默认值(即使它能够返回nil,因为它返回一个可选的)
func example(#name: Int) -> Int? {
case 1:
// do x
case 2:
// do y
return y
default:
break
}
相反,它需要
func example(#name: Int) -> Int? {
case 1:
// do x
return nil
case 2:
// do y
return y
default
return nil
}
现在你可能会问 - 为什么这很重要 - 我不能指定nil--甚至更好,不能使用可选的,只是设置一个'持有者'值为=""然后返回该值并完全跳过选项。是!我绝对可以,但我试图理解迅速的逻辑。
答案 0 :(得分:1)
不返回任何内容与返回Void(或空元组)相同,因此它与返回nil不同。
nil等同于Optional.None,其中Optional是枚举类型。
你可以在游乐场证明这一点:
print(nil === Optional.None) // "true\n"
print(Void.self == ().dynamicType) // "true\n"
答案 1 :(得分:0)
没有。这是不一样的。如果你没有退货。这意味着您实际返回Void
,而Void
不是Int?
创建func doSomething()
之类的函数时,实际上是func doSomething() -> Void