端口 [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]
我正在将 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]