将全局变量添加到列表时,vim是否将此变量添加为动态列表?
输入
g:ListTotal = []
let g:mylist = ['hi','2','','']
call add(g:ListTotal, g:mylist)
echo g:ListTotal
- > ['hi','2','','']
=>确定
然后在脚本g:mylist
中更改p.e.
let g:mylist[0] = 'hello'
echo g:mylist
- > = ['hello','2','','']
=>好的
再次将此列表添加到g:ListTotal:
call add(g:ListTotal, g:mylist)
:echo g:ListTotal
- >
的输出::
[['hello','2','',''],['hello','2','','']]
预期输出:
[['hi','2','',''],['hello','2','','']]
当vim被添加到另一个列表时,是否会动态更新列表? 如何将列表静态添加到另一个列表?
答案 0 :(得分:1)
我相信列表变量只是指向列表的指针,所以添加到列表只是添加指针,这就是为什么更改看起来更改两者。
如果您想要一个唯一的列表,您可以复制该列表。
call add(g:ListTotal, copy(g:mylist))
或者
call add(g:ListTotal, deepcopy(g:my list))
阅读:h copy()
和:h deepcopy()
。