我正在将raycaster从JavaScript移植到Swift,并且在理解以下行的内容时遇到了一些困难:
[origin].concat(ray(nextStep))
这里是完整功能:
function ray(origin) {
var stepX = step(sin, cos, origin.x, origin.y);
var stepY = step(cos, sin, origin.y, origin.x, true);
var nextStep = stepX.length2 < stepY.length2 ? inspect(stepX, 1, 0, origin.distance, stepX.y) : inspect(stepY, 0, 1, origin.distance, stepY.x);
if (nextStep.distance > range) return [origin];
return [origin].concat(ray(nextStep));
}
有人可以在这种情况下用[]括号表示什么,以及在这种情况下concat可以做什么吗?
谢谢
格雷格
取决于。 Array.prototype.concat
返回一个新数组,如果元素不是数组,则其元素为参数;如果元素为数组,则为其中的元素。
如果Array.prototype.concat
不是数组,则等效于
ray(nextStep)
如果[orgin, ray(nextStep)]
是一个数组,它将等效于
ray(nextStep)
例如,
[orgin, ...ray(nextStep)]