Vim scriptのselfについて

Vim scriptでは関数を辞書(PHPでいう連想配列)変数に代入することができます。
その関数のなかでselfを使うと、呼び出し元の辞書を参照できます。

let s:test = {'name' : 'hogefuga'}
function! s:test.func()
  echo self.name
endfunction

call s:test.func()

" 実行結果
hogefuga

普通の関数にもdict属性をつけると、selfで呼び出し元の辞書を参照できます。

function! Sum() dict
  return eval(join(self.data, '+'))
endfunction
let list = {'data': range(1, 10), 'sum': function("Sum")}
echo list.sum()

" 実行結果
55

ヘルプ

:h self

Vim script でオブジェクト指向プログラミング

"関数を代入した辞書を戻す"関数を作れば、オブジェクト指向のクラスっぽいものが作れるので、上で習ったとおり、cake.vimでもやってみています。