Когда я читаю документы или примеры, я часто вижу, как возникает идея, что вы можете назначить анонимную функцию переменной. Почему бы мне на самом деле это сделать, а не просто определить новую функцию?Зачем мне назначать анонимную функцию переменной?
Некоторые примеры:
Clojure/лисповские
(def add2
(fn [a] (+ 2 a))
(add2 4) ;; => 6
Python
add2 = lambda e: e + 2
add2(3) # => 5
Scala
val add2 = (x: Int) => x + 2
add2(5) /* => 7 */
Очевидно, что эти тривиальные примеры, но в производстве код, я обычно думаю о анонимной функции будучи один выключить функцию, что мне нужно для конкретного случая использования (думаю, выше kinded типы и тому подобное).
Может ли кто-нибудь объяснить, почему я бы назначил анонимную функцию переменной? Это время выполнения/время компиляции? Существуют ли определенные характеристики, которые делают это благоприятным?
Это действительно в основном основанный на мнении стиль. Но использование lambdas, как в ** Python **, не служит никакой другой «цели», кроме более сложной отладки. –
Я иногда присваиваю имя лямбда-функции, когда мне нужна функция 'key' (например, для' sort'), и когда я думаю, что определение функции в той же строке, где я использую ее, как аргумент, кажется слишком кратким, но определяющим регулярная функция кажется слишком многословной. – timgeb
Я действительно сделал это сегодня утром. Я тестировал 2 функции более высокого порядка, которые имели разные реализации, но должны иметь одинаковый ввод/вывод. Я связал функцию, переданную в 'let', а затем использовал ее в теле. Я мог бы определить его как конкретную функцию, но этого было достаточно для быстрого теста. – Carcigenicate