我将一些Javascript代码移植到Swift,我希望能提供一些简写代码的帮助。我熟悉大多数代码,但我发现速记真的很难读。
在一个函数中,变量定义为
var test = { a: Infinity };
在另一个函数中,变量作为简写中的比较的一部分返回:
return {a: b}
有人可以解释一下这段代码吗?
以下是我移植的代码(光线投射):
Map.prototype.cast = function(point, angle, range) {
var self = this;
var sin = Math.sin(angle);
var cos = Math.cos(angle);
var noWall = { length2: Infinity };
return ray({ x: point.x, y: point.y, height: 0, distance: 0 });
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));
}
function step(rise, run, x, y, inverted) {
if (run === 0) return noWall;
var dx = run > 0 ? Math.floor(x + 1) - x : Math.ceil(x - 1) - x;
var dy = dx * (rise / run);
return { x: inverted ? y + dy : x + dx, y: inverted ? x + dx : y + dy, length2: dx * dx + dy * dy };
}
我感到困惑的部分是:
var noWall = { length2: Infinity };
and
length2: dx * dx + dy * dy
这些做了什么?
由于
格雷格
答案 0 :(得分:1)
此代码是JavaScript中的语法错误:
return test: b
我猜你的代码不打算通过标准的JavaScript编译器运行,而“测试”部分可能与某种单元测试系统有关。
如果可以,请与熟悉代码的人仔细检查,否则只需将其用作Swift代码:
return b