假设我的函数需要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)
}
这似乎不起作用。
答案 0 :(得分:0)
我想通过“似乎不起作用。”,你的意思是你试图调用函数并期望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
用params调用它:
scala> test(sub, 5, 3)
2
scala> test(mul, 5, 3)
15