Scala中是否可以进行方法参数转发?

Tim*_*ske 4 methods scala parameter-passing

是否可以写类似于:

def foo(x: Int, y: Double)

def bar(x: Int, y: Double) = foo(_)
Run Code Online (Sandbox Code Playgroud)

我想避免重复自己说:

def foo(x: Int, y: Double)

def bar(x: Int, y: Double) = foo(x, y)
Run Code Online (Sandbox Code Playgroud)

因此,如果两个参数列表的类型和大小相同,并且不会重新定位参数,那么参数转发是否可以实现?

non*_*unk 10

是的,如果功能栏除了完全转发之外什么都不做foo,您可以执行以下操作:

def foo(x : Int, y : Double) { println("X: " x + " y: " + y) }
def bar = foo _

bar(1,3.0)
//prints out "X: 1 y: 3.0"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,下划线表示您想要返回函数foo本身,而不是调用它并返回reuslt.这意味着当bar调用它时,它将简单地返回该函数foo,然后使用您提供的参数调用该函数.