Что означают подчеркивания в анонимных функциях? - PullRequest
0 голосов
/ 02 января 2019

У меня есть метод ниже, который я пытаюсь понять

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

Что означает (_: Throwable) => Unit)?

Я понимаю, что это литерал функции по умолчанию, но я не знаюпонять подчеркивание.

1 Ответ

0 голосов
/ 02 января 2019

Это реализация функции по умолчанию.Это так просто, что его подпись выглядит почти так же, как и сама реализация;его подпись Throwable => Unit, и она реализована с помощью тривиального тела (_: Throwable) => Unit.Это означает «возьмите Throwable на входе и просто ничего не возвращайте».

Это то же самое, что и реализация (a: Throwable) => Unit, но тогда компилятор будет жаловаться, что a не используется.

Еще одна альтернатива для этой же вещи - (a: Throwable) => ().

...