考虑以下函数,该函数将列表中的每个元素加 1。
f : {{x + 1} each x}
f[(1;2;3)]
2 3 4
但是,以下函数不起作用——我假设
incr
标识符在后一个表达式中未绑定。
f : {incr : 1; {x + incr} each x}
f[(1;2;3)]
'incr
[3] f@:{x + incr}
如何在 kdb/q 中表达如下内容?
let f lst =
let incr = 1 in
List.map (fun x -> x + incr) lst
incr
不存在于内部函数中。
请参阅 https://code.kx.com/q4m3/6_Functions/#63-local-and-global-variables 了解更多详细信息。如果要使用需要从外部函数传入。
如果您想要实现的是
2 3 4
- 您可以简单地执行:1 2 3+1
。您只需在 kdb 中添加一个列表和一个原子即可。
有关更多详细信息,请参阅 https://code.kx.com/q4m3/6_Functions/#63-local-and-global-variables。