代码之家  ›  专栏  ›  技术社区  ›  shle2821

Swift期权(?)。两者之间有什么区别?

  •  0
  • shle2821  · 技术社区  · 10 年前

    就期权(?)而言,两者之间有什么区别? 我试着拿起swift,似乎“?”的位置很重要,我很难理解在不同的地方使用“?”会产生什么影响。

        var beaconGroup:GroupData = filteredArray.firstObject? as GroupData
    
        var beaconGroup:GroupData = filteredArray.firstObject as GroupData
    
    2 回复  |  直到 10 年前
        1
  •  3
  •   rickster    10 年前

    这两行之间没有区别:

    var beaconGroup:GroupData = filteredArray.firstObject? as GroupData
    
    var beaconGroup:GroupData = filteredArray.firstObject as GroupData
    

    首先 ? 是不必要的 firstObject 已返回可选。使用可选的链接运算符而不实际链接另一个成员查找或访问表达式没有效果。

    在Swift 1.2(目前在Xcode 6.3测试版中可用)中,过度使用可选的链接运算符是一个编译错误:

    错误:可选链无效,操作已生成“AnyObject?”

        2
  •  1
  •   Zigii Wong    10 年前

    Swift中的一个可选变量是可以保存值或不保存值的变量。期权是通过附加?类型:

    var myOptionalString:String? = "Hello"
    

    ? 以两种正常方式使用:

    1.声明一个可选变量(只需添加 ? 在类型之后)

    var strValue : String? 
    

    2.判断var将在被调用时响应方法或属性

    let hashValue = strValue?.hashValue  
    

    如果 strValue 为零, hashValue 为零。如果 strValue(字符串值) 不是零,因此 哈希值 是的值 strValue(字符串值) .