В Scala я могу создать caseclass, case class Foo(x:Int), а затем поместить его в список следующим образом:
List(Foo(42))
Теперь ничего странного. Для меня это странно. Оператор :: является функцией в списке, правильно? С любой функцией с одним аргументом в Scala я могу назвать ее с помощью нотации infix.
Примером является 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))
Я могу продолжать и использовать его, но что объясняет?