Scala中不同类型的方法签名是否有任何特殊含义?

时间:2014-07-06 04:16:12

标签: scala

在Scala中,一个带有2个参数的方法签名,其中一个是函数,可以用以下方式编写:

def methodFoo(funcBar: (Int => Boolean))(baz: List[Int])

或者:

def methodFoo(funcBar: (Int => Boolean), baz: List[Int])

根据签名,必须相应地修改方法的调用。但是,这两个签名之间的唯一区别还是这些语法会导致执行上的差异?

1 个答案:

答案 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兼容所必需的。

多个参数为您提供其他语法功能,请参见此处: