【发布时间】:2014-10-14 16:50:49
【问题描述】:
偶尔,我发现案例类的一个有趣特性。 foo 需要一个将 3 Int 转换为案例类的函数,代码如下所示:
case class Whatever(a: Int, b: Int, c: Int)
def foo(f: (Int, Int, Int) => Whatever) = f(1,2,3).c
foo(Whatever) //compilation fine, scala complier is powerful ...........
如果Whatever是普通类,显然编译会失败。
谁能解释一下为什么可以这样使用case类,我怀疑是工厂应用方法的原因,但我不确定。另外,如果是普通类,是否可以这样作为case类使用。
【问题讨论】:
-
你的猜测是正确的。这是因为 scala 为案例类创建的 companian 对象
标签: function scala functional-programming case-class