Hatena::ブログ(Diary)

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

2011-12-29

[]Vim script で self をローカルに展開する

辞書関数内で自分にアクセスする為には self を使わないとダメなんですが、ちょっと手間だったんでローカルに展開するようにしてみました。


[ソース]

let dict = {}
let dict.name1 = "homu"
let dict.name2 = "mami"
let dict.name3 = "mado"

function! dict.to_string()
    " l: に self を展開
    call extend(l:, self)

    return name1.name2.name3
endfunction

echo dict.to_string()

[出力]

homumamimado

地味に便利になったと思います。


[注意]

値は書き換わらないので注意して下さい。


function! dict.check()
    call extend(l:, self)
    
    let name1 = "saya"
    echo name1 == self.name1 " => 0
endfunction

自分で言ってて忘れそう…。


[参照]

http://d.hatena.ne.jp/osyo-manga/20110801/1312223748