Q 中使用 "Each" 语句的嵌套 For 循环等效项

Nested For Loop Equivalent using "Each" Statement in Q

我正在学习 Q 编程语言,因为我的新工作需要它。我正在做一些练习,想知道是否可以使用“each”关键字来模仿嵌套循环。

例如,我知道:

f:{x*x}
a:(1;2;3;4;5)
f each a -> 1 4 9 16 25j 

但是,假设我想模仿一个嵌套的 for 循环来乘以两个列表的值。如果我们有:

a:(1;2;3;4;5)
b:(1;2;3;4;5) 

在传统的 java 中,这将通过以下方式完成:

for(int i = 0; i < a.length; i++) {
    for(int j = 0; j < b.length; j++) {
        System.out.println(a[i]*b[j]);
    }
}

是否可以在 q 中使用“each”来模仿这种嵌套的 for 循环结构?

您可以在 kdb 中使用迭代器(以前称为副词)来实现此目的 乙

a*/:b // Each Right

将 b 的每个元素乘以 a 的每个元素。在这种情况下,就好像您在外循环中迭代 b,在内循环中迭代 a。

你可以把它翻到

a*\:b // Each Left

这将在你的外循环中有 a 而在你的内循环中有 b。 如果 a 和 b 的长度相同,并且您想按元素相乘,那么您可以做一个简单的

a*b

有关迭代器的更多信息: https://code.kx.com/q/wp/iterators/