Hatena::ブログ(Diary)

C++でゲームプログラミング

2013-06-01

[]Vim の sort の比較関数に reti.vim を使用する


上の issues でも言及されていますが Vim script の sort に渡す比較関数は filter や map とは違い、わざわざ関数を定義する必要がありめんどくさいです。

しかし、reti.vim であれば次のように既述することが出来ます。


echo sort([4, -4, 2, 3, 3, 1, 3, 0, -1, 4, 5], reti#lambda("a:1 - a:2"))
" => [-4, -1, 0, 1, 2, 3, 3, 3, 4, 4, 5]

更に reti#lambda は二項演算子を渡すと関数として返してくれるので次のように書くことも出来ます。


echo reti#lambda("+")(1, 2)
" => 3
echo reti#lambda("-")(1, 2)
" => -1

echo sort([4, -4, 2, 3, 3, 1, 3, 0, -1, 4, 5], reti#lambda("-"))
" => [-4, -1, 0, 1, 2, 3, 3, 3, 4, 4, 5]

reti.vim 便利。