代码之家  ›  专栏  ›  技术社区  ›  KayV

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

  •  1
  • KayV  · 技术社区  · 6 年前

    我不熟悉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,温度)的RDD。

    现在我想把这段代码转换成一个行程序。我尝试了以下代码:

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

    它工作得很好,但是我不能在这里格式化tuple中的第二个值。

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

    1 回复  |  直到 6 年前
        1
  •  3
  •   Kolmar    6 年前

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

    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) 
    }