Javascript port var test = { a: Infinity }

Javascript port var test = { a: Infinity }

本文关键字:Infinity port var test Javascript      更新时间:2023-09-26

我正在将一些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中的语法错误:

return test: b

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

如果可以的话,请与更熟悉代码的人进行检查,否则就使用此代码作为您的Swift代码:

return b