我发现一些Vim列表功能无法正常工作。 例如:
let list0 = [1, [1, 2]]
echo count(list0, 1)
它会返回1
,但我希望它返回2
。所以我认为这些函数不能深入到嵌套列表中,只能在第一级工作。
我想在这里我应该将嵌套列表扩展为这样的普通列表:
list0 = [1, 1, 2]
如何展平嵌套列表?
答案 0 :(得分:2)
" Code from bairui@#vim.freenode " https://gist.github.com/3322468 function! Flatten(list) let val = [] for elem in a:list if type(elem) == type([]) call extend(val, Flatten(elem)) else call add(val, elem) endif unlet elem endfor return val endfunction
此处unlet elem
是必要的。由于elem
变量正在更改,因此它是列表项或列表,VimL不支持将列表项分配给列表,反之亦然。
答案 1 :(得分:0)
我建议vital.vim的Data.List.flatten作为另一个答案; D