gpt4 book ai didi

kdb - 每项权利与每项权利之间的区别

转载 作者:行者123 更新时间:2023-12-01 10:22:00 24 4
gpt4 key购买 nike

在KDB中,为什么我可以这样做:

{[x;y]x+y} ./: enlist[(1;1);(2;1)]

但不是这个:

{[x]x+1} ./: enlist[1;2]

如果我使用这个:

{[x]x+1} each enlist[1;2]

然后就可以了。为什么采用 2 个参数会有所不同?

最佳答案

我认为这里有几件事需要解释,但不是 each 和 each-right 之间的区别。

您的第一个和第二个示例不完全具有可比性。对于多个参数,enlist 返回单个列表,因此 enlist[(1;1);(2;1)] 返回一个通用列表,而 enlist[1; 2] 返回类型化列表(长列表)。更多关于 enlist here .

现在,动词点的应用之一是-变量应用,阅读here .这意味着它将多个参数应用于一个函数,因此 . 需要一个列表。 Each-right 依次获取右侧的每个项目并将其传递给左侧的函数。由于 . 需要一个列表,但第二行中的每个项目都是原子长度,因此会引发类型错误。

更新第二行,以便 . 收到与第一行中一样的列表...

q){[x]x+1} ./: 征募[(1;2)]
'排名

这次我们看到一个排名错误,因为 . 尝试将 2 个参数应用于 monadic 函数。同样;

q){[x]x+1}[1;2]
'排名

为了解决这个问题,我们可以进一步招募。这样每个权利将 2, 1 项目列表传递给 . 而不是 1, 2 项目列表。

q){[x]x+1} ./: 招募每个 (1;2)
2 3

关于kdb - 每项权利与每项权利之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50226241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com