Vimスクリプト(blob)(その7)

前回Blobをリストに変換する関数を作りましたが、そもそもそんな関数使うのでしょうか。
Blobはリストと同じアクセスができるのだから必要ないですよね。
echoで表示するときに、カンマで区切ってくれて見やすいぐらいでしょうか。
リストと同じってことはmap処理もできるはずです。for文を使う必要もないんですね。
Blobをmapで処理してみます。

let data=0z010203040506070809
:echo map(data,'v:val * v:val')


ものすごく簡単ですね。

リストと同じと考えればよいとすると、変数の代入だと内部はコピーされません。copyを使用する必要があります。
代入の場合。

:let data=0z010203
:let out = data
:let data[0] = 0xFF
:echo out

dataを変更したら、outも変更されました。要するに変数の代入をしただけでは、中身はコピーされていません。リストと同じ性質ですね。

次はcopyを使ってみます。

:let data=0z010203
:let out = copy(data)
:let data[0] = 0xFF
:echo out


値の変化がないってことは、中身もコピーされたってことですね。リストと同じです。

Leave a Reply

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

CAPTCHA