从JavaScript到Swift的端口[origin] .concat(ray(nextStep))

问题描述 投票:0回答:1

我正在将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可以做什么吗?

谢谢

格雷格

javascript swift concat porting raycasting
1个回答
2
投票

取决于。 Array.prototype.concat返回一个新数组,如果元素不是数组,则其元素为参数;如果元素为数组,则为其中的元素。

如果Array.prototype.concat不是数组,则等效于

ray(nextStep)

如果[orgin, ray(nextStep)] 是一个数组,它将等效于

ray(nextStep)

例如,

[orgin, ...ray(nextStep)]
© www.soinside.com 2019 - 2024. All rights reserved.