在Scala中,如果定义了一个名为方法apply
在一个类或一个顶层对象,每当我追加一对括号该类的实例方法将被调用,并且把适当的参数对apply()
之间他们。 例如:
class Foo(x: Int) {
def apply(y: Int) = {
x*x + y*y
}
}
val f = new Foo(3)
f(4) // returns 25
所以基本上, object(args)
是只是语法糖object.apply(args)
。
如何斯卡拉做到这一点的转换?
是否有一个全局定义的隐式转换会在这里,类似于PREDEF对象的隐式类型转换(但实物不同)? 或者是一些更深层的魔力? 我问,因为它看起来像斯卡拉强烈支持较小的一套规则的一致应用,而不是许多例外许多规则。 这最初似乎是一个例外给我。