我有一个由 分隔的字符串"/"
,然后我将其拆分为一个数组。例如。
local string = 'Code/Github/Exercises'
local array = std.split(string, "/")
// ['Code', 'Github', 'Exercises']
然后如何转换array
以便获得输出:
// ['Code', 'Code/Github', 'Code/Github/Exercises']
下面的代码片段实现了它,std.foldl()
用作“迭代器”来访问每个元素并构建返回的数组
local string = 'Code/Github/Exercises';
local array = std.split(string, '/');
// If `array` length > 0 then add `elem` to last `array` element (with `sep`),
// else return `elem`
local add_to_last(array, sep, elem) = (
local len = std.length(array);
if len > 0 then array[len - 1] + sep + elem else elem
);
// Accumulate array elements, using std.foldl() to visit each elem and build returned array
local concat(array) = (std.foldl(function(x, y) (x + [add_to_last(x, '/', y)]), array, []));
concat(array)