在方法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)
  }

似乎不起作用。

我猜是"似乎不起作用"。您的意思是,您正在尝试调用该功能,并期望在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

最新更新