Scalaでは、caseclassを作成し、次case class Foo(x:Int)
のようにリストに入れることができます。
List(Foo(42))
さて、ここでは何も奇妙なことはありません。以下は私には奇妙です。演算子::
はリスト上の関数ですよね?Scalaで引数が1つある関数なら、中置記法で呼び出すことができます。例は、オブジェクト1 + 2
の関数です。定義したクラスには演算子がありませんが、次のことはどのように可能ですか?(+)
Int
Foo
::
Foo(40) :: List(Foo(2))
Scala 2.8 RC1では、インタラクティブプロンプトから次の出力が得られます。
scala> case class Foo(x:Int)
defined class Foo
scala> Foo(40) :: List(Foo(2))
res2: List[Foo] = List(Foo(40), Foo(2))
続けて使えますが、説明は?