Функция равна значению по умолчанию для функции в Scala

#scala

#scala

Вопрос:

У меня есть следующий метод:

 def foo[B](fn: (B,B) => Boolean): Unit = {
  // do something       
}
 

Есть ли способ предоставить equals параметру значение по умолчанию fn ?

Я уже пробовал

def foo[B](fn: (B,B) => Boolean = ==): Unit = ...

но это терпит неудачу. (Я также пробовал ==[B] , equals[B] , B.equals , и т.д., но ничего не работает)

Ответ №1:

Я обнаружил, что:

 def foo[B](fn: (B,B) => Boolean = (a:B, b:B) => a == b)
 

работает.

Я также заново узнал, что метод и функция — это не одно и то же.

Комментарии:

1. _ == _ это также должно сработать, если вы хотите сэкономить несколько символов.

2. @maasg Я тоже так думал, но компилятор отвергает это.

3. Я пытался. Ты прав. Синтаксис подчеркивания в этом случае недопустим.