Avatar
omochimetaru 8/2/2018 9:52 AM
(ここで self はいつものインスタンスselfじゃなくてクラスそれ自体の方
9:53 AM
僕が最初に言ったのもその視点。
9:53 AM
koher が言ってるのは、その行単体でみれば AnimalBase だからおかしくない、って話で
9:53 AM
その視点の場合は、継承先で同じ convenience init が実行されてることがおかしい って言い方になる。
9:54 AM
@koher そのケースは、Selfが引数部だから contravariance が効いていて、 Siamese.foo(x: Siamese) が実装されていると考えることができる。
9:54 AM
なぜなら(というか直感的説明では)、 Cat をうける foo は Siamese も受けられるから。 (edited)
9:55 AM
@koher Self を返り値に使うケースでは covariance が効くのだけどそれだとどうしてもおかしなことになる関係でコンパイラがエラーを出します