gpt4 book ai didi

java - Scala 12.x 和 Java 11 `String.lines`,如何在链式调用中强制隐式转换?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:55 24 4
gpt4 key购买 nike

问题描述Scala StringOps 提供了一个返回 Iterator[String]lines 方法。Java 11 添加了返回类型为 java.Stream[String]lines()

在像这样的链式方法调用中

val text: String
text.lines.foldLeft("")(_ + _)

代码将不再编译并抛出 foldLeft 未在 java.Stream[String] 上定义的异常。据我所知,不再应用隐式解析,因为现在已经在 java.String 中找到了 lines 方法。

我如何表达我希望应用隐式(没有括号的)而不是 java.String.lines()

附加信息

  • 我找到了 linesIterator,但它已被弃用。
  • 降级是一种选择,但是否有解决办法。
  • val text : StringOps 看起来真的很丑但是解决了但我对这个解决方案不满意

最佳答案

StringOps#lines 和 jdk11 java.lang.String#lines 之间的冲突是 scala 中的一个错误,参见问题 11125 .

此错误的修复是取消弃用 linesIterator,这是在 2.12.7 中完成的。

Welcome to Scala 2.12.7 (OpenJDK 64-Bit Server VM, Java 11).

scala> "a".lines
res0: java.util.stream.Stream[String] = java.util.stream.ReferencePipeline$Head@2df259d0

scala> "a".linesIterator
res1: Iterator[String] = <iterator>

关于java - Scala 12.x 和 Java 11 `String.lines`,如何在链式调用中强制隐式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52815574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com