リストの同一性
リストが入った変数を別の変数へ代入すると、参照になる。
知らなかったー。
copy()でリストのコピーを作ればOKと思ったが、
"浅いコピー"になるので要素がリストだとコピー元も変更される。
完全にコピーを作ろうと思ったら、deepcopy()を使えばOK。
:help list-identity
Vim documentation: eval
let a = [1,2,3] let b = a call add(b, 4) echo a " [1, 2, 3, 4]
let a = [1,2,3] let b = a call extend(b, [4,5,6]) echo a " [1, 2, 3, 4, 5, 6]
let a = [1,2,3] let b = copy(a) call extend(b, [4,5,6]) echo a " [1, 2, 3]
let a = [1,2,[3,4,5]] let b = copy(a) let b[2][2] = 'hoge' echo a " [1, 2, [3, 4, 'hoge']]
let a = [1,2,[3,4,5]] let b = deepcopy(a) let b[2][2] = 'hoge' echo a " [1, 2, [3, 4, 5]]
Vim Scriptテクニックバイブル
絶対買う!
Vim script テクニックバイブル ~Vim使いの魔法の杖
- 作者: Vim scriptサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2014/08/06
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る