オブジェクト指向開発 in vimscript

クラスの実装

宣言

let s:Person = {}

コンストラク

function! s:Person(name, age, gender)
    let p = deepcopy(s:Person)
    let p.name   = a:name
    let p.age    = a:age
    let p.gender = a:gender
endfunction

メソッドの定義

function! s:Person.getName() 
    return self.name
endfunction
function! s:Person.getAge() 
    return self.age
endfunction
function! s:Person.getGender() 
    return self.gender
endfunction

使用例

let tanaka = s:Person('tanaka', 27, 1)
echo tanaka.getName()