Может быть полезно написать полные типы x
и y
, например,
val x: (Int, Int) => (Int, Int) => Int =
(a: Int, b: Int) => (_: Int) + (_: Int)
val y: (Int, Int) => Int =
(_: Int) + (_: Int)
Здесь мы видим, когда x
применяется к двум аргументам, он возвращает еще одну функцию типа
(Int, Int) => Int
Обратите внимание, что сокращение
(_: Int) + (_: Int)
эквивалентно
(a: Int, b: Int) => a + b