В 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))
Я могу продолжать и использовать его, но что объясняет?