假设我需要对三个向量求和:
$(document).ready(function() {
var button1 = $("#sidebarButton1");
var content1 = $("#sidebarContent1");
button1.mouseenter(function() {
content1.queue('collapsequeue',function(){
content1.collapse('show');
});
if (!content1.hasClass("collapsing")) {
content1.dequeue("collapsequeue");
}
});
button1.mouseleave(function() {
content1.queue('collapsequeue',function(){
content1.collapse('hide');
});
if (!content1.hasClass("collapsing")) {
content1.dequeue("collapsequeue");
}
});
content1.on("shown.bs.collapse hidden.bs.collapse", function(){
content1.dequeue("collapsequeue");
});
});
如果我以这种方式对5-6个向量求和,那么我最终会得到4-5个嵌套元组。有没有更好的方法来总结几个向量?
答案 0 :(得分:4)
Vector(v1,v2,v3).transpose.map(_。sum)
答案 1 :(得分:1)
请注意内存分配,具体取决于您的矢量大小,可能不是您想要的。避免它的一种方法是完全必要或做这样的事情:
def sum(v: Vector[Int], vs: Vector[Int]*): Vector[Int] = {
val ixs = 0 until v.length
for {
_ <- v.slice(0, 1) // Hint for CanBuildFrom
ix <- ixs
} yield vs.foldLeft(v(ix))(_ + _(ix))
}
scala> sum(Vector(1,2,3), Vector(4,5,6), Vector(7, 8, 9))
res0: Vector[Int] = Vector(12, 15, 18)