在q中,我试图在递增参数 <input onblur="callYourFunction()" id="form1_name" name="name" class="s_input" required="required" type="text">
上调用函数f
,而不满足某些条件。
函数id
创建一个随机长度(1到5之间)的表,其中列f
取决于输入identifier
:
id
从f:{[id] len:(1?1 2 3 4 5)0; ([] identifier:id+til len; c2:len?`a`b`c)}
开始,id=0
应在f
时调用,即长时间生成长度为1的表格。每一步都应增加(count f[id])>1
。
使用“重复”副词我可以执行while条件和起始值:
id
但是如何继续增加{(count x)>1} f/0
?
答案 0 :(得分:1)
不完全确定这是否能解决您的问题,但我能够通过在函数内部递增id
并在每次迭代时返回它来使其工作:
q)g:{[id] len:(1?1 2 3 4 5)0; id[0]:([] identifier:id[1]+til len; c2:len?`a`b`c);@[id;1;1+]}
在这种情况下,id
是一个2元素列表,其中第一个元素是您要返回的表(最初为()
),第二个项目是id
。通过修改退出条件,我可以在输出表的计数为1时停止:
q)g/[{not 1=count x 0};(();0)]
+`identifier`c2!(,9;,`b)
10
如果您只需要该表,则可以在上述表达式的输出上运行first
:
q)first g/[{not 1=count x 0};(();0)]
identifier c2
-------------
3 a
函数f
的问题在于,当使用over并扫描输出时,如果每次迭代成为下一次迭代的输入。在你的情况下,你的函数正在处理第二遍传递给表的数值。