- 1
val cityEq: (City) -> (Customer) -> Boolean = { city -> { it.city == city } }
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
val cityEq: (City) -> (Customer) -> Boolean = { city -> { it.city == city } }
Какой Kotlin ^_^^_^^_^
Ого, прям как в функциональщине всякой.
А откуда берутся city и it? Нигде же не написаны имена аргументов.
А, в "{ city -> ...}" "city" — это как раз имя параметра.
Во внешней лямбде меньше сахара, там { city -> f(city) }.
А вот во внутренней уже и имя переменной опустили, поэтому там it. Т.е. там { it -> it.city == city } если полностью расписать.
Когда лямбда присваивается переменной с явня заданным типом — Котлин изо всех сил пытается вывести типы параметров лямбд автоматически.
Какое руби )))
Тип лямбды зависит от типа переменной, которой эта лямбда присваивается.
Каррирование, частное применение?
Какая невнимательность )))
Я ещё понимаю, зачем писать (a -> b) -> c и зачем начинающий писал бы a -> (b -> c). Но (a) -> (b) -> c. Зачем? Зачем?