Vim 7.4.1989 から filter() と map() で関数参照が受け取れるようになった
Vim 7.4.1989 から filter() と map() で関数参照が受け取れるようになりました。
github.com
これにより map(list, Funcref)
という風に Funcref
を呼び出すことが出来ます。
この時に v:key
と v:val
は Funcref(v:key, v:val)
というように引数に渡されます。
function! Cond(key, value) return a:key =~ '^m' endfunction echo filter({ "homu" : 1, "mami" : 2, "mado" : 3 }, function("Cond")) " => {'mami': 2, 'mado': 3} let sum = { "value" : 0} function! sum.call(index, value) let self.value += a:value return a:value endfunction call map(range(1, 10), sum.call) echo sum.value " => 55
これ、今後絶対に必要になってくると思っているのでかなり嬉しいです。