Javascript port var test = {a:Infinity}

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

我正在将一些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

这些是做什么的?

谢谢

格雷格

javascript swift porting
1个回答
1
投票

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

return test: b

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

如果可以的话,请与更加熟悉该代码的人进行仔细检查,但否则请将其用作您的Swift代码:

return b
© www.soinside.com 2019 - 2024. All rights reserved.