在方法scala中调用带参数的函数

时间:2018-02-15 10:33:28

标签: scala

假设我的函数需要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)
  }

这似乎不起作用。

1 个答案:

答案 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