第7回Vimスクリプト入門みたいの(リスト)
長くなったので分割して、書きだめするよ。汚いとか言うな。これは18日分。
" usr_41 vimスクリプトの作り方から " 「41.8 リストと辞書」より " " 変数の型について、あいまいな知識のままやってきたが、 " そろそろ文字列と数値以外の型が使いたい。そう思っていたら " 丁度いい感じにマニュアルに書かれていた。試してみる。 " " まず、サンプル。 let a = ['a', 'b', 'c'] echo a echo a[1] echo a[3] " echo a は ['a', 'b', 'c'] と出力される。 " echo a[1] は b と出力される。 " echo a[3] はエラーが出る。 " " リストを走査するには :for が使えるらしい。 " let a2 = ['a', 'b', 'c'] for v in a2 echo v endfor for i in range(len(a2)) echo a2[i] endfor " 前者は素直に要素を見る例。for eachのイメージ。 " 後者は range() で0から要素数-1の添字のリストで回す例。Cのイメージ。 " len() はリストの要素数を返す。 " range() は数値のリストを返す。 " " ここまでの内容で、第1回に書いたFizzBuzzを書きなおしてみる。 " for i in range(1, 100) if (i % 5 == 0) && (i % 3 == 0) echo 'FizzBuzz' elseif (i % 5 == 0) echo 'Buzz' elseif (i % 3 == 0) echo 'Fizz' else echo i endif endfor " " リストに使える関数は以下のあたりで見れる。 " :h List " :h E714 " :h functions " もっと良い一覧がありそう。とりあえず、自分なりの一覧を作ってみた。 " " add() " call() " copy() " count() " deepcopy() " empty() " extend() " filter() " get() " index() " insert() " join() " len() " map() " match() " max() " min() " range() " remove() " repeat() " reverse() " sort() " split() " string() " " range() と string() は微妙なところだけど、まぁいいかな。 " それぞれの例を書いたんだけど、すごく長くなったので、数回に " 分けようと思う。 " " 今回のまとめ " :for " :endfor " len() " range() "