Scalaを勉強し始めて出てきた(一応Rustonomiconにもあったがよく分からず読み飛ばした)ので整理する

  • 共変は親に子をぶち込められる
  • 反変は子に親をぶち込められる

関数はなんで反変かというと、関数定義には引数に何かしらの子の型を指定した場合、定義内には子かそれ以上の親のメソッドが使えるため。だから実際にはぶち込んでいるような感覚ではない。

その他オブジェクトは大体、親に子をぶち込められるのは直感的に分かる

ちなみに「ぶち込められる」はら抜き言葉で「ぶち込める」な気がするが、「ぶち込める」は「ぶち込める」で可能表現が抜かれて「ぶち込む」と同じように聞こえるため、明確に可能表現とするには「ぶち込められる」にしたほうがいいと思う