Vimスクリプト(extend)

毎度リストを使っていて、リストの中のリストの要素を抽出するために、for文を入れ子にするのが、すごく面倒に感じます。
入れ子のないリストにすることはできないでしょうか。

let a=[[1,2],[3,4],[5,6]]

というリストを、

let a=[1,2,3,4,5,6]

こうしてくれる関数などないかなあと、vimのヘルプを探してみましたが、見つかりませんでした。(あるのかもしれませんが)

ってことで作ってみます。リストを指定したときに、そのリストをグローバル変数にaddする関数を作ればよいです。リストの連結をするには、extendを使います。

:function Addmylist(l)
:  call extend(g:mylist,a:l)
:endfunction

使ってみます。

:let a=[[1,2],[3,4],[5,6]]
:let mylist=[]
:call map(a,'Addmylist(v:val)')

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA