Avatar
Swift4からOptional同士のキャストもas?で書けるようになってた。3からいけたっけ? let x = Int??.none as? Int? let y = Int?.none as? Int?? switch x { case .none: print("print") case .some: print("-") } switch y { case .none: print("-") case .some: print("print") } (edited)
9:48 AM
で、↑の非対称性が気になる
9:48 AM
そもそも値の互換性というのが動的型付け言語っぽくって中々厳しい感情があるというのが
9:50 AM
nn?
9:50 AM
これはこれで問題ないのか
9:54 AM
ああ、これですね
9:55 AM
let x = [Int?.none] as? [Int??] switch x?.first! { case .none: print("x") // !! case .some(.none): print("y") case .some(.some): print("z") } let y = [Int?.none] as [Int??] switch y.first! { case .none: print("x") case .some(.none): print("y") // !! case .some(.some): print("z") } (edited)
9:58 AM
as? と asで挙動がかわるのもあった
9:59 AM
bugs.swift.orgにあがってるかな。なければ後でまとめて書いておこう。