在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,因此具有mapflatMap 。 由于enuminit(rawValue:)返回一个可选参数,因此我们需要使用flatMap 。 看起来像这样

 让名字:字符串?  =“金星” 
让planet = name.flatMap({Planet(rawValue:$ 0)})

原始故事https://github.com/onmyway133/blog/issues/49