最近我发现了一种将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)我可以使用这种行为(有任何警告)吗?在官方文件里有描述过吗?
这似乎是绝对令人震惊的技巧:我们肯定地将函数(列表/字典/表)应用于它的参数,而不仅仅是将参数传递给一个函数。
发布于 2020-09-11 10:43:55
我认为,如果您认为字典的行为就像一个函数,它将键作为输入并输出值,这是合理的。
因此,同样地,一个加倍的函数会使输入的值加倍,同时保留输入的键:
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| 6https://stackoverflow.com/questions/63844694
复制相似问题