読者です 読者をやめる 読者になる 読者になる

Vim script で lambda を使用する際の注意

Vim

と、いうことなので次のような lambda も上手く動作しません。

function! s:main()
    let value = 2

    let F = { xs -> filter(xs, "v:val % value == 0") }
   " Error: E121: 未定義の変数です: value
    echo F(range(1, 10))

    let F = { xs -> filter(xs, "v:val + value") }
   " Error: E121: 未定義の変数です: value
    echo F(range(1, 10))
endfunction
call s:main()

明示的に変数を指定してキャプチャする機能がほしくなりますね。