функция:
def foo(a: Int): Int = a * 2
Ее можно представить так:
val foo: Int => Int = _ * 2
Если карированная то можно так:
def foo(a: Int)(b: Int) = a * b
val foo: Int => Int => Int = a => b => a * b
А как то можно записать это при помощи val?:
def foo(a: Int)(implicit b: Int) = a * b
В скала 3 можно будет
иногда на def-ах писать громоздко получается но если есть имплиситные параметры другого пути нет(
Можно определить свой трейт аналогичный FunctionN с apply, принимающим имплисит
можешь делать жирные имплиситы и потом разбирать их
Ну сделай свой тип и конструктор для него: trait ?=>[A, B] { def apply(implicit a: A): B }
Обсуждают сегодня