代码之家  ›  专栏  ›  技术社区  ›  kgui K-K

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

  •  0
  • kgui K-K  · 技术社区  · 6 年前

    我有一个方法,下面我试图理解

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

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

    我理解它是默认的函数文本,但我不理解下划线。

    1 回复  |  直到 6 年前
        1
  •  3
  •   slouc    6 年前

    它是函数的默认实现。它非常简单,以至于它的签名看起来几乎与实现本身相同;它的签名是 Throwable => Unit ,并用平凡体实现 (_: Throwable) => Unit . 它的意思是“在输入时接受一些可丢弃的东西,不要返回任何东西”。

    它与实现它一样 (a: Throwable) => Unit 但是编译器会抱怨 a 未被使用。

    同样的另一种选择是 (a: Throwable) => () .