在Scala中,一个带有2个参数的方法签名,其中一个是函数,可以用以下方式编写:
def methodFoo(funcBar: (Int => Boolean))(baz: List[Int])
或者:
def methodFoo(funcBar: (Int => Boolean), baz: List[Int])
根据签名,必须相应地修改方法的调用。但是,这两个签名之间的唯一区别还是这些语法会导致执行上的差异?
答案 0 :(得分:1)
至于执行,没有区别。它们转换为相同的字节代码:
class A {
def f1(a: Int, b: Int) = a + b
def f2(a: Int)(b: Int) = a + b
}
结果
public int f1(int, int);
public int f2(int, int);
如果使用javap
查看.class文件。这是与Java兼容所必需的。
多个参数为您提供其他语法功能,请参见此处: