Vim script の lambda でローカル変数をキャプチャする
どうせなら l:
を使ってやるかーという感じでやってみました。
function! s:main() let a = 3 let F = function({ local, b -> [extend(l:, local), a + b][-1] }, [l:]) echo F(2) " => 5 let a = -2 echo F(5) " => 3 endfunction call s:main()
lambda 内でも extend(l:, dict)
はちゃんと動作するみたいですね。
[使用した vim のバージョン]
- 7.4.2067