Если вам нужно обработать более 5 аргументов, вы можете перегрузить foo
для любого количества аргументов, которое вам нужно. Scala (в настоящее время) может обрабатывать только функции до Function22
, поэтому вы можете охватить все возможности 22 строками кода и хорошим использованием сайта вызова.
def foo[T](f: (T) => Boolean) = true
def foo[T](f: (T, T) => Boolean) = true
def foo[T](f: (T, T, T) => Boolean) = true
def foo[T](f: (T, T, T, T) => Boolean) = true
def foo[T](f: (T, T, T, T, T) => Boolean) = true
// snip
def foo[T](f: (T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T) => Boolean) = true
Элегантно, нет. Работает, да.