前回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
値の変化がないってことは、中身もコピーされたってことですね。リストと同じです。
コメント