Javascript端口var test = {a:Infinity}

问题描述:

我正在将一些Javascript代码移植到Swift,我希望能对一些简写代码提供一些帮助。我对大多数代码都很熟悉,但我发现速记非常难以阅读。Javascript端口var test = {a:Infinity}

在一个函数变量定义为

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

所以你问到这个JavaScript代码转换为斯威夫特? – Kametrixom

+2

'return test:b'应该是一个语法错误。 'test:'最接近[label](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label),它不能在表达式中使用。也就是说,除非正在使用预处理器 - 例如[CoffeeScript的](http://coffeescript.org/)。 –

+0

'var test = {a:Infinity}'很简单,很难“简写”...!? – deceze

此代码是在JavaScript语法错误:

return test: b 

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

仔细检查与别人比较熟悉的代码,如果你可以,但在其他方面只是用这个作为你的银行代码:

return b