Dan*_*ian 2 currying kdb q-lang
在kdb + / q中,如何通过一系列功能通过管道传递数据,以使上一步的输出成为下一步的输入?
例如:
q)t:([]sym:`a`c`b;val:1 3 2)
q)`sym xkey `sym xasc t / how to achieve the same result as this?
Run Code Online (Sandbox Code Playgroud)
我猜想有些变化over或/可以工作:
?? over (xasc;xkey)
Run Code Online (Sandbox Code Playgroud)
优点:如何实现t从右侧插入的方式(本着q语法左右读法的精神)?
(xasc;xkey) ?? t
Run Code Online (Sandbox Code Playgroud)
如何通过函数的顺序列表传递数据,以便将上一步的输出作为下一步的输入?
您可以使用鲜为人知的合成运算符。例如:
q)f:('[;])over(2+;3*;neg)
q)f 1 # 2+3*neg 1
-1
Run Code Online (Sandbox Code Playgroud)
如果要使用左右语法,则必须定义自己的动词:
q).q.bonus:{(('[;])over x)y}
q)(2+;3*;neg)bonus 1
-1
Run Code Online (Sandbox Code Playgroud)