2011-04-05 19 views
6

Para mi Google Docs spreadsheet module, me gustaría que una función sea capaz de aceptar una matriz de valores e iterar sobre ellos, agregándolos a un hash. El formulario de envío de hojas de cálculo quiere valores en un formato como este:Iteración sobre una matriz en una función

{"entry.0.single": value0, 
"entry.1.single": value1, 
"entry.2.single": value2} 

Si la función acepta una matriz como la siguiente,

[value0, value1, value2] 

es posible bucle sobre ellas, mantener un contador de ejecución, y crear un hash? Esta sería una tarea simple en otros idiomas. Python es suficiente para la ilustración:

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

¿Eso se puede hacer en KRL?

Respuesta

3

funciones recursivas son de su amigo:

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 tiene el valor de {'entry.1.single' :'value1','entry.0.single' :'value0','entry.2.single' :'value2'};

Se necesita una función recursiva aquí porque usted está haciendo una conversión estructura. Si quería una matriz de nuevo, podría haber usado map()method.

Además, mire su caja base escribiendo funciones recursivas. KNS hace cumplir un límite de recursión.

Cuestiones relacionadas