假设我的功能占2个ints并返回1 int:
val sub : (Int, Int) => Int = (x,y) => x - y
val mul : (Int, Int) => Int = (x,y) => x * y
我将如何创建一种接受上述类型的方法。我尝试了:
def test(f:(Int,Int) => Int) : Unit = {
val a = f
println(a)
}
似乎不起作用。
我猜是"似乎不起作用"。您的意思是,您正在尝试调用该功能,并期望在println
中输出。
该功能按设计工作。只是您可能希望它能起作用的方式...
因此,例如,这将行不通:
scala> test(sub(5, 3))
<console>:14: error: type mismatch;
found : Int
required: (Int, Int) => Int
test(sub(5, 3))
但是您可以稍微修改test()
:
scala> def test(f:(Int,Int) => Int, x: Int, y: Int) : Unit = {
| val a = f(x, y)
| println(a)
| }
test: (f: (Int, Int) => Int, x: Int, y: Int)Unit
并用参数称呼:
scala> test(sub, 5, 3)
2
scala> test(mul, 5, 3)
15