(discord/swift/2018/03/02/0) SwiftのOptionalが絡んだoverrideの仕様が乱れてる件について

概要

  • discord ios dev
    • #swift
    • 2018/03/02-03
  • SwiftのOptionalが絡んだoverrideの仕様が乱れてる件について

log

tarunon - 2018/03/02

class My {
    func get() -> Int?? {
        return 1
    }
}

class MyMy: My {
    override func get() -> Int? {
        return 2
    }
}

MyMy().get()

おもちと議論しててOptionalのアレを見つけてしまった

cc @koher @rintaro


koher - 2018/03/02

これはひどい・・・


omochimetaru - 2018/03/03

改めてみたら説明が足りなすぎる

↑のコードはオーバライドできない、ってコンパイルエラーになる。

でも、もし親が Int で 子が Int? ならオーバライドできるので、

法則が乱れてるね、という話です


tarunon - 2018/03/03

[SR-7111] Compile fail override function T?? to T? - Swift

検証したいこと

  • Optional、ArrayなどのGenericsが絡んだオーバーライドの挙動を確認

検証

moaible-swift-memo.hateblo.jp