【发布时间】:2014-04-10 20:55:22
【问题描述】:
我已经习惯了 Scala 的“for”结构并且非常喜欢它。我现在正在编写一些 JavaScript 代码并使用 Lodash(基本上是 Underscore 的扩展)。有没有办法在 JavaScript 中模仿 Scala 的“for”理解?
我的目标是清理类似这样的 map/reduce 代码:
var rawCoordinates = _.map( directionsRoute.legs, function ( leg ) {
return _.map( leg.steps, function ( step ) {
return _.map( step.path, function ( latLng ) {
return [ latLng.lng(), latLng.lat() ];
} );
} );
} );
var finalCoordinates = _.flatten( rawCoordinates, true );
在代码中,我生成了[[coord1,coord2,coord3],[coord4,coord5]] 格式的坐标数组,其中每个坐标为[39.5, -106.2](它是每个 Google 地图方向步骤的坐标数组)。
在 Scala 中,同样的事情可以这样写:
val stepCoordinates:List[List[Tuple2[Number,Number]]] = for {
leg <- legs;
step <- leg.steps;
path <- step.path;
latLng <- path
} yield (latLng.lng(), latLng.lat())
谢谢!
【问题讨论】:
-
其实scala的理解might be written like this所以会更容易理解
-
Scala 代码中不需要嵌套的
for。 -
哦,好点,我修好了
标签: javascript scala underscore.js lodash