对于我的Google Docs电子表格模块,我希望一个函数能够接受一个值数组并迭代它们,将它们添加到哈希中。电子表格提交表单需要以下格式的值:
{"entry.0.single": value0,
"entry.1.single": value1,
"entry.2.single": value2}
如果函数接受如下所示的数组,
[value0, value1, value2]
是否可以循环访问它们,保持运行计数器并创建哈希?在其他语言中,这将是一项简单的任务。Python 足以说明:
hash = dict()
i = 0
for val in values:
hash["entry.%s.single" % i] = val
i += 1
这可以在KRL中完成吗?
归函数是你的朋友:
a = ['value0', 'value1', 'value2'];
r = function(a, h, n){
top = a.head();
newhash = h.put({'entry.#{n}.single':top});
a.length() > 1 => r(a.tail(), newhash, n+1) | newhash;
};
out = r(a, {}, 0);
out
具有{'entry.1.single' :'value1','entry.0.single' :'value0','entry.2.single' :'value2'};
的价值
这里需要一个递归函数,因为您正在执行结构转换。如果你想要一个数组,你可以使用 map()
方法。
另外,请注意编写递归函数的基本情况。KNS 确实强制执行递归限制。