下划线在匿名函数中意味着什么?

时间:2019-01-02 17:07:26

标签: scala lambda functional-programming anonymous-function

我要尝试了解的方法

  def method1[A](
    messageCallback: String => A,
    failureCallback: Throwable => Unit = (_: Throwable) => Unit
  ) = {}

(_: Throwable) => Unit)是什么意思?

我知道这是默认的函数文字,但我不理解下划线。

1 个答案:

答案 0 :(得分:3)

这是函数的默认实现。它是如此简单,其签名看起来几乎与实现本身相同。它的签名是Throwable => Unit,并用琐碎的正文(_: Throwable) => Unit实现。它的意思是“在输入时使用Throwable,什么也不返回”。

与将其实现为(a: Throwable) => Unit相同,但是编译器会抱怨a未使用。

同一件事的另一种选择是(a: Throwable) => ()