【问题标题】:Optional Binding on Implicitly Unwrapped Optional隐式展开的可选绑定可选
【发布时间】:2014-06-30 01:21:07
【问题描述】:

Swift 编程指南说“您还可以使用带有可选绑定的隐式解包选项,在单个语句中检查和解包它的值”。当值已经解包时,为什么需要使用可选绑定?选项绑定会再次解包吗?

【问题讨论】:

    标签: swift optional


    【解决方案1】:

    调用隐式展开与使用 ! 调用常规可选项相同在它之后。它仍然可以保存一个 nil 值,当它为 nil 时调用它会导致运行时错误,因此如果您不确定它是否为 nil,请使用 if let 可选绑定。

    var myOptional: Int! = nil
    
    10 + myOptional //runtime error
    
    if let myUnwrapped = myOptional{
        10 + myOptional //safe
    }
    

    【讨论】:

    • 只要像第二行代码那样调用可选的,就会自动解开可选的 nil 与否。 if let 检查,然后展开。
    • 所以可选绑定必须再次打开它?在这种情况下,您是否可以跳过 if let myUnwrapped 并检查 myOptional 是否因为您没有使用 myUnwrapped?
    • 这只是一种更安全的解包方式
    • @Boon 你也可以使用if let _ = myOptional { ... },因为你不打算使用 myUnwrapped
    【解决方案2】:

    当值已经存在时,为什么还需要使用可选的绑定 展开

    没有已经打开了。隐式展开的可选项只是一个可选项。当在某些表达式(后缀表达式,可选绑定有效的相同表达式)中使用时,它会隐式展开。但除此之外,它只是一个可选的,而不是展开的。您可以像使用其他选项一样使用可选绑定。

    【讨论】:

      猜你喜欢
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      相关资源
      最近更新 更多