如何同时使用 Scala 格式和替换插值?

How to use Scala format and substitution interpolation together?

我是 scala 和 spark 的新手,有一个要求我想在单个 println 语句中同时使用格式和替换。

代码如下:

val results = minTempRdd.collect()

for(result <- results.sorted){
  val station = result._1
  val temp = result._2
  println(f" StId $station Temp $temp%.2f F")
}

其中结果是一个具有结构 (stationId, Temperature) 的 RDD。

现在我想将这段代码转换成一个衬里。我尝试了以下代码:

val results = minTempRdd.collect()

results.foreach(x => println(" stId "+x._1+" temp = "+x._2))

它工作正常,但我无法在此处格式化元组中的第二个值。

有什么建议,我们如何才能做到这一点?

第一种方式是在插值中使用花括号,它允许传递任意表达式而不是变量:

println(f" StId ${result._1} Temp ${result._2}%.2fF")

第二种方式是解包元组:

for ((station, temp) <- results.sorted) 
  println(f" StId $station Temp $temp%.2fF")

或者:

results.sorted.foreach { case (station, temp) => 
  println(" stId "+x._1+" temp = "+x._2) 
}