将字典应用于字典
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
最近发现了一个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