loop
语法
loop(func, args…)
参数
func 是一个函数。
args 是 func 的参数。
详情
loop 高阶函数与 each 高阶函数很相似,区别在于函数返回值的格式和类型。
each 高阶函数根据每个子任务计算结果的数据类型和形式,决定返回值的数据形式。若所有子任务的数据类型和形式都相同, 则返回 Vector 或 Matrix,否则返回 Tuple。而 loop 总是返回 Tuple。
例子
下例中,loop 返回一个包含两种数据格式的元组:标量和向量。
$ loop(call{, 3 4 5}, (sum, log));
(12,[1.098612,1.386294,1.609438])
// call{,x} 是一个将另一个函数作为参数的部分应用。
$ loop(call{, 3 4 5}, (log, sum));
([1.098612,1.386294,1.609438],12)
下例中,loop 计算表中每一列中的最大值。
$ t = table(1 2 3 as id, 4 5 6 as value, `IBM`MSFT`GOOG as name);
$ t;
id |
value |
name |
---|---|---|
1 |
4 |
IBM |
2 |
5 |
MSFT |
3 |
6 |
GOOG |
$ loop(max, t.values());
(3,6,"MSFT")