每项权利与每项权利之间的差异
Difference between each right and each
在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
returns 是一个列表,因此 enlist[(1;1);(2;1)]
returns 是一个通用列表,而 enlist[1;2]
returns 是一个类型列表(多头列表) .更多关于 enlist
here.
现在,动词点的应用之一是多-变体应用,阅读here。这意味着它将多个参数应用于一个函数,因此 .
需要一个列表。 Each-right 依次获取右侧的每个项目并将其传递给左侧的函数。由于 .
需要一个列表,但第二行中的每个项目都是原子长度,因此会引发类型错误。
正在更新第二行,以便 .
收到与第一行中一样的列表...
q){[x]x+1} ./: enlist[(1;2)]
'rank
这一次我们看到排名错误,因为 .
试图将 2 个参数应用于单子函数。同样;
q){[x]x+1}[1;2]
'rank
要解决这个问题,我们可以进一步征募。因此每个权利将 2, 1 项目列表传递给 .
而不是 1, 2 项目列表。
q){[x]x+1} ./: enlist each (1;2)
2 3
在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
returns 是一个列表,因此 enlist[(1;1);(2;1)]
returns 是一个通用列表,而 enlist[1;2]
returns 是一个类型列表(多头列表) .更多关于 enlist
here.
现在,动词点的应用之一是多-变体应用,阅读here。这意味着它将多个参数应用于一个函数,因此 .
需要一个列表。 Each-right 依次获取右侧的每个项目并将其传递给左侧的函数。由于 .
需要一个列表,但第二行中的每个项目都是原子长度,因此会引发类型错误。
正在更新第二行,以便 .
收到与第一行中一样的列表...
q){[x]x+1} ./: enlist[(1;2)]
'rank
这一次我们看到排名错误,因为 .
试图将 2 个参数应用于单子函数。同样;
q){[x]x+1}[1;2]
'rank
要解决这个问题,我们可以进一步征募。因此每个权利将 2, 1 项目列表传递给 .
而不是 1, 2 项目列表。
q){[x]x+1} ./: enlist each (1;2)
2 3