以下面Tuple (ANY Vector)中的例子为例:
a=(2, [3, 5], 10); max a; // output [10,10]
为什么 max a
返回 [10, 10]?是不是因为向量[3,5]被展开,从而形成了两个元组,[2,3,10]和[2,5,10]?相关内存的分布是怎样的?
我目前的猜测是,要么是元素存储的时候,要么是动态计算的时候,内存扩大了,元素重复了。
如果元组a的所有元素都是标量,
max a
将它们一一比较;如果 a 包含一个数组, max a
会迭代该数组以查找最大值,例如示例中的 10。为了方便后续的向量化计算,将结果转换为与元组中最长数组长度相同的向量,得到[10,10]。