String Scala字符串-如何更改行

String Scala字符串-如何更改行,string,scala,String,Scala,我正试图根据结果制作一份信息丰富的报告。 我目前有一个.foreach循环在一个列表上迭代,并编写报告 代码如下所示: result.foreach { tupleResult => tupleResult._3 match { case "FirstTest" => language1 = createReport(tupleResult) case "SecondTest" => l

我正试图根据结果制作一份信息丰富的报告。 我目前有一个.foreach循环在一个列表上迭代,并编写报告

代码如下所示:

result.foreach {
    tupleResult =>
      tupleResult._3 match {
        case "FirstTest" =>
          language1 = createReport(tupleResult)
        case "SecondTest" =>
          language2 = createReport(tupleResult)
        case "ThirdTest" =>
          language3 = createReport(tupleResult)
      }
      finalReport = ""
  }
每个“createReport”都是一个方法,它在相关语言变量中创建一行字符串。 我希望每次迭代都在“finalReport”字符串中添加不同的行

“最终报告”示例:


问题是如何将不同的变量创建为同一“finalReport”字符串的不同行。

更惯用的scala方法是不要同时执行多个操作,也要改变状态,而是将其视为单独的操作/表达式。比如说:

val sortedResults = result.sortBy(_._3 match {
  case "FirstTest" => 1
  case "SecondTest" => 2
  case "ThirdTest" => 3
})

val reportLines = sortedResults.map(result => createReport(result._3))

val finalReport = reportLines.mkString("\n")

更惯用的scala方法是不要同时做几件事,也不要改变状态,而是将其视为单独的操作/表达式。比如说:

val sortedResults = result.sortBy(_._3 match {
  case "FirstTest" => 1
  case "SecondTest" => 2
  case "ThirdTest" => 3
})

val reportLines = sortedResults.map(result => createReport(result._3))

val finalReport = reportLines.mkString("\n")

更惯用的scala方法是不要同时做几件事,也不要改变状态,而是将其视为单独的操作/表达式。比如说:

val sortedResults = result.sortBy(_._3 match {
  case "FirstTest" => 1
  case "SecondTest" => 2
  case "ThirdTest" => 3
})

val reportLines = sortedResults.map(result => createReport(result._3))

val finalReport = reportLines.mkString("\n")

更惯用的scala方法是不要同时做几件事,也不要改变状态,而是将其视为单独的操作/表达式。比如说:

val sortedResults = result.sortBy(_._3 match {
  case "FirstTest" => 1
  case "SecondTest" => 2
  case "ThirdTest" => 3
})

val reportLines = sortedResults.map(result => createReport(result._3))

val finalReport = reportLines.mkString("\n")

将排序与测试字符串相关联可能是一种解决方案,例如

val ord = Array("FirstTest","SecondTest","ThirdTest").zipWithIndex.toMap
然后我们可以生成报告的各个部分,并最终按照定义的顺序对它们进行排序

val finalReport = result.map { tRes => (ord.get(tRes._3), createReport(tRes)) }
  .sortBy(_._1)
  .map(_._2)
  .mkString("\n")

将排序与测试字符串相关联可能是一种解决方案,例如

val ord = Array("FirstTest","SecondTest","ThirdTest").zipWithIndex.toMap
然后我们可以生成报告的各个部分,并最终按照定义的顺序对它们进行排序

val finalReport = result.map { tRes => (ord.get(tRes._3), createReport(tRes)) }
  .sortBy(_._1)
  .map(_._2)
  .mkString("\n")

将排序与测试字符串相关联可能是一种解决方案,例如

val ord = Array("FirstTest","SecondTest","ThirdTest").zipWithIndex.toMap
然后我们可以生成报告的各个部分,并最终按照定义的顺序对它们进行排序

val finalReport = result.map { tRes => (ord.get(tRes._3), createReport(tRes)) }
  .sortBy(_._1)
  .map(_._2)
  .mkString("\n")

将排序与测试字符串相关联可能是一种解决方案,例如

val ord = Array("FirstTest","SecondTest","ThirdTest").zipWithIndex.toMap
然后我们可以生成报告的各个部分,并最终按照定义的顺序对它们进行排序

val finalReport = result.map { tRes => (ord.get(tRes._3), createReport(tRes)) }
  .sortBy(_._1)
  .map(_._2)
  .mkString("\n")

你的问题我不太清楚。您想要类似于:
finalReport+=createReport(…)+“\n”
?您似乎理解我的意思。我想要一个有序的列表,其中每个语言变量都添加到前一行中。正确的方法是这样的:finalReport=language+“\n”?如果要覆盖finalReport中的内容,finalReport+=language“\n”不起作用。它将\n作为字符串的一部分写入,而不是添加新行。我不太清楚您的问题。您想要类似于:
finalReport+=createReport(…)+“\n”
?您似乎理解我的意思。我想要一个有序的列表,其中每个语言变量都添加到前一行中。正确的方法是这样的:finalReport=language+“\n”?如果要覆盖finalReport中的内容,finalReport+=language“\n”不起作用。它将\n作为字符串的一部分写入,而不是添加新行。我不太清楚您的问题。您想要类似于:
finalReport+=createReport(…)+“\n”
?您似乎理解我的意思。我想要一个有序的列表,其中每个语言变量都添加到前一行中。正确的方法是这样的:finalReport=language+“\n”?如果要覆盖finalReport中的内容,finalReport+=language“\n”不起作用。它将\n作为字符串的一部分写入,而不是添加新行。我不太清楚您的问题。您想要类似于:
finalReport+=createReport(…)+“\n”
?您似乎理解我的意思。我想要一个有序的列表,其中每个语言变量都添加到前一行中。正确的方法是这样的:finalReport=language+“\n”?如果要覆盖finalReport中的内容,finalReport+=language“\n”不起作用。它将\n作为字符串的一部分写入,而不是添加新行。