- 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 } если полностью расписать.
Когда лямбда присваивается переменной с явня заданным типом — Котлин изо всех сил пытается вывести типы параметров лямбд автоматически.
ненавижу кстати неявный захват всякого говна. ГЦ-Пидары натащут хуйни, а мне потом мемори лики искать
Какое руби )))
Тип лямбды зависит от типа переменной, которой эта лямбда присваивается.
Каррирование, частное применение?
Какая невнимательность )))
Это зело полезно для написания DSLей
ну собссно и в руби тоже похоже
Я ещё понимаю, зачем писать (a -> b) -> c и зачем начинающий писал бы a -> (b -> c). Но (a) -> (b) -> c. Зачем? Зачем?
https://pbs.twimg.com/media/GQlgT4yWMAA8ZT2?format=jpg&name=medium