Javascript port var test = {a:Infinity}

时间:2015-07-18 20:42:54

标签: javascript swift port

我将一些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
这些做了什么?

由于

格雷格

1 个答案:

答案 0 :(得分:1)

此代码是JavaScript中的语法错误:

return test: b

我猜你的代码不打算通过标准的JavaScript编译器运行,而“测试”部分可能与某种单元测试系统有关。

如果可以,请与熟悉代码的人仔细检查,否则只需将其用作Swift代码:

return b