autoload に定義されている関数を呼びやすくする
autoload に以下のような定義を書くことで、ユーザコードから定義されている関数を呼び出す事が出来ます。
[./autoload/accel/functional.vim]
" accel#functional は、ディレクトリ構成と同じにする必要がある function! accel#functional#plus(a, b) return a:a + a:b endfunction function! accel#functional#minus(a, b) return a:a - a:b endfunction
[ユーザコード]
echo accel#functional#plus(2, 3) echo accel#functional#minus(5, 6)
[出力]
5 -1
この様に、関数名の前にディレクトリ構成を記述することで、ユーザコードから呼び出すことが出来る、関数が定義できます。
しかし、ディレクトリ構成が深い場合、ディレクトリ構成も含めた関数名が長くなってしまうので、コードが読みづらくなってしまいます。
あと書くのがめんどくさい。
" accel#functional とか邪魔 echo accel#functional#plus(accel#functional#minus(5, 2), accel#functional#minus(2, 5))
と、いう事でちょっと改良。
[./autoload/accel/functional.vim]
function! accel#functional#plus(a, b) return a:a + a:b endfunction function! accel#functional#minus(a, b) return a:a - a:b endfunction " 関数テーブルを用意 let accel#functional#functional = { \ "plus" : function("accel#functional#plus"), \ "minus" : function("accel#functional#minus") \ }
[ユーザコード]
" 関数テーブルを好きに名前付けする let f = accel#functional#functional " 呼び出しがすっきり echo f.plus(2, 3) echo f.minus(5, 6) echo f.plus(f.minus(5, 2), f.minus(2, 5) ) " 普通に呼び出すことも出来る echo accel#functional#plus(6, 3) echo accel#functional#minus(1, 6)
[出力]
5 -1 0 9 -5
関数テーブルを用意して、そこから関数の呼び出しを行います。
これでだいぶ関数の記述がすっきりしたと思います。