考虑一下代码:
var cities = [
['zürich', 47.368650, 8.539183],
['City2', 21.568650, 2.439183],
['City3', 41.568650, 4.439183]
];
var dist = calculateDistance(cities[0][2], cities[0][3], cities[1][4], cities[1][5], 'K');
alert(dist);
function calculateDistance(lat1, lon1, lat2, lon2, unit) {
var radlat1 = Math.PI * lat1 / 180
var radlat2 = Math.PI * lat2 / 180
var radlon1 = Math.PI * lon1 / 180
var radlon2 = Math.PI * lon2 / 180
var theta = lon1 - lon2
var radtheta = Math.PI * theta / 180
var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
dist = Math.acos(dist)
dist = dist * 180 / Math.PI
dist = dist * 60 * 1.1515
if (unit == "K") {
dist = dist * 1.609344
}
if (unit == "N") {
dist = dist * 0.8684
}
return dist + unit
}
是否有更简洁的方法可以在不使用地图构建器的情况下将def convertMape(map:Map[Any,Any]): Map[String,String] = {
map.foldLeft(Map.newBuilder[String,String]) {(builder,kv)=>
builder += ((kv._1.toString, kv._2.toString))
}.result()
}
转换为Map[Any,Any]
?
答案 0 :(得分:2)
怎么样?
map.map{case (k,v) => k.toString -> v.toString}
答案 1 :(得分:1)
使用for comprehesion,
for ( (k,v) <- map) yield k.toString -> v.toString