2
我發現一些Vim列表函數不能按我的想法工作。 例如:如何在Vim腳本中拼合嵌套列表?
let list0 = [1, [1, 2]]
echo count(list0, 1)
它返回1
,但我想它返回2
。所以我認爲這些函數不能深入到嵌套列表中,只能在第一級工作。
我想在這裏我應該擴大嵌套列表爲普通列表如下:
list0 = [1, 1, 2]
如何扁平化嵌套列表?
我發現一些Vim列表函數不能按我的想法工作。 例如:如何在Vim腳本中拼合嵌套列表?
let list0 = [1, [1, 2]]
echo count(list0, 1)
它返回1
,但我想它返回2
。所以我認爲這些函數不能深入到嵌套列表中,只能在第一級工作。
我想在這裏我應該擴大嵌套列表爲普通列表如下:
list0 = [1, 1, 2]
如何扁平化嵌套列表?
" Code from [email protected]#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不支持將列表項分配給列表,反之亦然。
是的,但我點了正確的答案兩次,今天不能改變。 – stardiviner 2012-08-11 09:56:03
不,這是必要的,因爲'elem'變量正在改變,它是一個列表項或列表,VimL不支持將一個列表項分配給一個列表,反之亦然。 – stardiviner 2012-08-12 04:20:17