【发布时间】:2021-10-22 03:42:49
【问题描述】:
我的项目中有以下小而复杂的方法:
private def indent ( s : String )
= s.lines.toStream match {
case h +: t =>
( ("- " + h) +: t.map{"| " + _} ) mkString "\n"
case _ => "- "
}
在将我的项目从 Scala 2.11 升级到 2.12 后,它将不再编译。错误:
CaseClassString.scala:14: value toStream is not a member of java.util.stream.Stream[String]
我试过这样重写:
private def indent ( s : String )
= Stream(s.lines) match {
case h +: t =>
( ("- " + h) +: t.map{"| " + _} ) mkString "\n"
case _ => "- "
}
但它不起作用。
此方法在以下项目中找到: https://github.com/nikita-volkov/sext
该函数将转换如下字符串:
metricResult: column: value: city
function: density
value: metricValue: 0.1
到:
- metricResult: column: value: city
| - function: density
| - value: metricValue: 0.1
有人对如何为 Scala 2.12 重写此方法有其他想法吗?
【问题讨论】:
-
该方法应该做什么?自 Scala 2.11 以来,发生了很多变化(特别是在 Java 方面),您可以只查看更新的文档,而不是随意尝试。您当前的 Java 版本是什么?
-
更新了问题,详细说明了它的作用。我正在使用 Java 1.8
-
第 3 列和第 4 列中嵌套的
-s 应该来自哪里?当应用于"foo\nbar\nbaz"时,它会产生"- foo\n| bar\n| baz",而不是"-foo\n| - bar\n| - baz"? -
此错误表明您正在使用 Java 11 或更高版本 ::
CaseClassString.scala:14: value toStream is not a member of java.util.stream.Stream[String] -
那么对我来说是个谜。我的 IntelliJ 项目使用的是 Java 8。我什至没有安装 11。
标签: string scala scala-2.12