Привет, коллеги. Эта заметка относится к серии "Скриптовый язык" и описывает нововведения Вим версии 8: лямбда-выражения и замыкания. Модные темы добрались и до Вим! Проверить, что у вас это есть, можно так: echo has('lambda') В коде тоже так можно проверить наличие данной возможности: через has(). Итак, что такое безымянная функция, она же лямбда-выражение? Это функция, создаваемая по месту и присваиваемая переменной. Это как бы выражение, возможно, с параметрами, которое не вычисляется сразу. Синтаксис в Вим: {аргументы -> выражение} Например, :let f = {x -> x*x+1}
echo f(1) Или :let f = {x,y -> sqrt(x*x+y*y)} Или даже без параметров: :let pi = {-> arccos(-1.0)} Выражение справа от -> является выражением: команды Вим там доступны только через execute. Параметры доступны по имени без префикса a:, в отличие от функций. Замыканием называется доступ к переменным и другим объектам из области видимости, которая может уже и не существовать. Пример: function F(x)
let y = 42
return {z