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,然后使用您提供的参数调用该函数.