关于wrap的问题

来源:1-6 swift枚举之可选型的实质是枚举!

梁华建

2019-01-13 13:26


let name = Optional.some("daniel")

这时候的name是String? 也就是说这个name是属于Optional的枚举类型的

如果一解包个String?的值 解包出来是nil 就是说这个值是属于Optional里面的.none类型 而他不是属于Optional里面的.some类型?


写回答 关注

1回答

  • 慕数据021159
    2019-01-22 12:31:32
    已采纳

    先上代码:

    var name = Optional.some("daniel")

          name  = Optional.none

    首先:对题主提问中对表表述做一点点更正。也许更正了这个也就同时解决了题主对提问

    “就是说这个值是属于Optional里面的‘.none类型 ’而他不是属于Optional里面的‘.some类型 ’?”

    其中.‘.none类型 ’不应该称之为一种“类型”,‘.some类型 ’也不应该称之为一种“类型”。它们两个都是“Optional类型”这种类型的一个枚举值。顺便说一下,至于“Optional类型”从源码看(

    public enum Optional<Wrapped> : ExpressibleByNilLiteral

    ),它是一个枚举类型。


    另外:

    如果一解包个String?的值 ,得到的结果是String类型。对nil 进行解包,是不会得到nil的。代码如下。题主可以借助 Xcode 自行看一下相应对变量类型

    var str : String? = nil  // 等价于  var str2 : String? = Optional.none

    if let newStr = str {

        print(newStr)

    else{

    //    print(newStr) //编译出错

        print("解包失败")

    }


    梁华建

    对 是枚举类型,我还以为现在没人学Swift了 没看到什么人问答哈哈

    2019-01-30 15:08:04

    共 1 条回复 >

玩儿转Swift 2.0(第三季)

玩儿转Swift面向对象,对swift语言的掌握达到中等偏上水平

13967 学习 · 41 问题

查看课程

相似问题