在Swift中使用Optionals初始化枚举
今天有人给我看了medium.com/@_Easy_E/initializing-enums-with-optionals-in-swift-bf246ce20e4c,它试图用可选值初始化枚举。
枚举行星:字符串{
汞盒
金星
案例地球
案例火星
木箱
土星
天王星
海王星
}扩展名RawRepresentable {
初始化?(optionalValue:RawValue?){
保护让值=可选值else {return nil}
self.init(rawValue:值)
}
} let name:字符串? =“金星”
let planet = Planet(可选值:名称)
关于可选的一个有趣的事实是,它是一个monad,因此具有map
和flatMap
。 由于enuminit(rawValue:)
返回一个可选参数,因此我们需要使用flatMap
。 看起来像这样
让名字:字符串? =“金星”
让planet = name.flatMap({Planet(rawValue:$ 0)})
原始故事https://github.com/onmyway133/blog/issues/49