我是KDB + / q语言的新手,正在尝试一些基本的在线练习。
我正在尝试创建一个接受列表的函数,并返回列表中第二个项目加倍的列表。
L:{[x;y] y:[1]; y*2; x}
我的尝试包括将函数分配给L
,概述参数x
,y
然后通过索引该值y
并将该值乘以2来分配逻辑中的第二项。我x
之所以使用,是因为我想将该列表赋给x
然后x
函数末尾输出。每次我测试它时,输入一个列表,L 10 20 30 40 50
我都不会在第二项中看到任何变化。我需要一些有关我的语法是否正确或逻辑是否正确或两者兼有的帮助。我目前正在使用Q for Mortals作为参考。如果是我的语法错误。q中函数的正确语法是什么?
在您的示例中,将设置y
为1并返回x
未修改的值。
您的方法的正确语法将是以下之一:
{[x]x[1]:2*x[1];x}
{[x]x[1]*:2;x}
在这种情况下,仅需要一个参数。第一个示例不是将其保存为变量,而是直接更新了第二个元素。第二个示例更为简洁,但大致相同。
另一种可以说是更清洁的方法是:
{[x]@[x;1;2*]}
将功能应用于2*
第二个元素。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句