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

Port [origin].concat(ray(nextStep)) from JavaScript to Swift

我正在将 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 returns 一个新数组,如果它们不是数组,则其元素是参数,如果它们是数组,则其元素是其中的项目。

如果ray(nextStep)不是数组,则等价于

[orgin, ray(nextStep)]

如果ray(nextStep)是一个数组,它将等价于

[orgin, ...ray(nextStep)]

例如,

[1,2,3].concat(4, [5,6], 7); // [1,2,3,4,5,6,7]