Avatar
Slavaのアドバイス通り共通のサブタイピングを利用した処理で書いてみると色々おもしろい動きになって、 1. protocol Animal, class Cat: Animal の場合、返り値のcovarianceはOKクラッシュもしない、引数のcontravarianceはコンパイルエラー 2. protocol Animal, struct Dog: Animal の場合、両方ダメ 3. OptionalはOK こんな感じになった (edited)