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


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