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