Swift选项需要nil?无法使用休息?

时间:2015-07-19 00:51:22

标签: swift

我理解可选项的重要性(允许代码运行,如果收到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--甚至更好,不能使用可选的,只是设置一个'持有者'值为=""然后返回该值并完全跳过选项。是!我绝对可以,但我试图理解迅速的逻辑。

2 个答案:

答案 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