知识卡片
枚举原始值与相关值的区别
内容
原始值(rawValue)是把每个枚举成员和某个固定类型的一个静态值绑定死,所有同类型枚举成员 共享同一种原始值类型,且值在定义时就确定,适合”这个成员本质上就等价于某个值”的场景 (如用整数表示星期几)。相关值(associated values)则允许每个枚举成员携带自己独有的一组 参数,不同成员的参数类型和个数可以完全不同,且这些参数是在具体创建实例时才赋值的,适合 “这个成员是一类结构,具体内容因实例而异”的场景(如图形枚举里圆需要半径、矩形需要宽高)。 发散:原始值让枚举成员本身就是一个值,相关值让枚举成员变成一个携带数据的构造器,这正是 枚举能表达”和类型”(sum type)而不只是一串命名常量的关键。
参考来源
《Swift 4从零到精通iOS开发》第6章《高级运算符与枚举》