迭代函数中的数组

Ste*_*Nay 6 krl

对于我的Google Docs电子表格模块,我想要一个能够接受值数组并迭代它们的函数,将它们添加到散列中.电子表格提交表单需要采用以下格式的值:

{"entry.0.single": value0,
 "entry.1.single": value1,
 "entry.2.single": value2}
Run Code Online (Sandbox Code Playgroud)

如果函数接受如下所示的数组,

[value0, value1, value2]
Run Code Online (Sandbox Code Playgroud)

是否有可能循环它们,保持运行计数器,并创建一个哈希?这在其他语言中是一项简单的任务.Python足以说明:

hash = dict()
i = 0
for val in values:
  hash["entry.%s.single" % i] = val
  i += 1
Run Code Online (Sandbox Code Playgroud)

可以用KRL完成吗?

Tel*_*Sam 3

递归函数是你的朋友:

    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);
Run Code Online (Sandbox Code Playgroud)

out具有以下价值{'entry.1.single' :'value1','entry.0.single' :'value0','entry.2.single' :'value2'};

这里需要递归函数,因为您正在进行结构转换。如果您想要返回一个数组,您可以使用该map() 方法

另外,请注意编写递归函数的基本情况。KNS 确实强制执行递归限制。