【发布时间】:2022-01-08 12:40:05
【问题描述】:
以下代码在reduce行中抛出错误:
let vectors
function setup() {
createCanvas(400,400);
vectors = [];
vectors.push(createVector(100,100));
vectors.push(createVector(100,0));
vectors.push(createVector(0,100));
let s = vectors.reduce(p5.Vector.add, createVector(0,0));//error!
console.log(s.x,s.y);
}
function draw() {
vectors.forEach(v => line(0,0,v.x,v.y));
}
错误似乎出现在向量add 方法的p5.js 代码中。错误信息开始:
p5.js says: There's an error as "set" could not be called as a function (on line 91666 in p5.js [https://cdn.jsdelivr.net/npm/p5@vv1.4.0/lib/p5.js:91666:22]).
这个错误似乎最令人困惑的是,如果有问题的行被替换为:
let s = vectors.reduce((u,v) => p5.Vector.add(u,v), createVector(0,0));
这对于我的预期应用程序来说已经足够了,但我想了解错误,而不是仅仅找到一种笨拙的方法来回避它。因此,我的问题是——为什么尝试直接使用 reduce 与 p5.Vector.add 失败但将其包装在匿名函数中会成功?
【问题讨论】:
标签: javascript processing p5.js