4

Listサイズを比較するためのより合理的な方法を提供するためにクラスを拡張しようとしていますが、タイトルのエラーに遭遇します...

これが私のコードです:

implicit class RichList[A, B](input: List[A]) {
  def >(that: List[B]): Boolean = input.size > that.size
  def <(that: List[B]): Boolean = input.size < that.size
}

アイデアは、リストのサイズを比較するだけなので、それらのタイプが異なる可能性があり、問題にならないということでしたが、これを実行しようとすると:

val test = List(1,2,3,4) < List(1,2,3,4,5)

前述のエラーが発生します。B を削除thatしてタイプに設定すると正常にList[A]動作しますが、2 つの異なるタイプを含むリストを使用することはできません...

A と B の両方が同じ型になれないのはなぜですか? または、何か不足していますか?

編集:わかりました、エラーの解決策を見つけました。これはかなり単純です:

implicit class RichList[A](input: List[A]) {
  def >[B](that: List[B]): Boolean = input.size > that.size
  def <[B](that: List[B]): Boolean = input.size < that.size
}

しかし、私の質問はまだ残っています。なぜ私はそれを他の方法で行うことができないのですか?

4

1 に答える 1