将字典应用于字典

Applying dictionary to dictionary

最近发现了一个dict对dict的技巧。它是这样的:

(3 4 5!6 7 8)[(`a`b)!(2 3)] ~ (`a`b!0N 6)

甚至这个,从左到右阅读看起来更自然:

(@[;(`a`b)!(2 3)](3 4 5!6 7 8)) ~ (`a`b!0N 6)

我可以使用这种行为吗(有什么注意事项吗)?官方文档中有描述吗?


这似乎是绝对令人兴奋的技术:我们绝对将函数 (list/dictionary/table) 应用于它的参数,而不仅仅是 将参数传递给函数.

我认为如果您将字典视为一个以键作为输入和输出值的函数,这是合理的。

因此,以相同的方式,加倍的函数会使输入的值加倍,同时保留输入的键:

q)f1:2*
q)f1[`a`b!2 3]
a| 4
b| 6

接受键并输出值的“函数”(字典)会做类似的事情:

q)f2:3 4 5!6 7 8
q)f2[`a`b!2 3]
a|
b| 6