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

Vim 7.4.1989 から filter() と map() で関数参照が受け取れるようになった

Vim

Vim 7.4.1989 から filter() と map() で関数参照が受け取れるようになりました。
github.com

これにより map(list, Funcref) という風に Funcref を呼び出すことが出来ます。
この時に v:keyv:valFuncref(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

これ、今後絶対に必要になってくると思っているのでかなり嬉しいです。