Неявные функции одного аргумента используются для автоматического преобразования значений в ожидаемый тип. Они известны как неявные представления. С двумя аргументами это не работает или не имеет смысла.
Вы можете применить неявное представление к TupleN
:
implicit def intsToString( xy: (Int, Int)) = "test"
val s: String = (1, 2)
Вы также можете пометить окончательный список параметров любой функции как неявный.
def intsToString(implicit x: Int, y: Int) = "test"
implicit val i = 0
val s: String = intsToString
Или, комбинируя эти два использования implicit
:
implicit def intsToString(implicit x: Int, y: Int) = "test"
implicit val i = 0
val s: String = implicitly[String]
Однако в данном случае это не очень полезно.
UPDATE
Чтобы уточнить комментарий Мартина, это возможно.
implicit def foo(a: Int, b: Int) = 0
// ETA expansion results in:
// implicit val fooFunction: (Int, Int) => Int = (a, b) => foo(a, b)
implicitly[(Int, Int) => Int]