在Scala中,我可以做一个caseclass,case class Foo(x:Int)
,然后把它放在一个列表,像这样:斯卡拉的'::'运算符,它是如何工作的?
List(Foo(42))
现在,任何异常。以下对我来说很陌生。运营商::
是一个列表上的功能,对吗?使用Scala中的一个参数的任何函数,我都可以用中缀表示法来调用它。 一个示例是1 + 2
是对象Int
上的函数(+)
。我刚刚定义的类Foo
没有::
运算符,那么以下情况可能如何?
Foo(40) :: List(Foo(2))
在斯卡拉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))
我可以继续使用它,但究竟是如何解释呢?
它也适用于将类型参数传递给类型构造函数。假设你有一个case class :: [H,T](head:H,tail:T);和类SomeType [A];那么你可以做新的SomeType [:: [String,Int]](“a”,3)和新的SomeType [H :: T](“a”,3) – lisak 2014-08-04 13:45:43