groovy - 带有 lambda 的 java 8 字符串列表函数在 groovy 中不起作用
问题描述
在 java 8 中,这段代码完美运行:
Stream<String> lines = Files.lines(outfile) {
List<String> replaced = lines
.map(line ->
line.replaceAll('date1', "$newdate1"))
.collect(Collectors.toList())
Files.write(outfile, replaced)
}
在 groovy 中,因为我使用的是 2.6 之前的 groovy 版本,所以没有。我无法更改它,是 Katalon 中使用的那个。我收到错误“意外令牌 ->”
我试图用这两种方法将 lambda 函数括在括号中,但没有一种方法有效:
Stream<String> lines = Files.lines(outfile) {
List<String> replaced = lines
.map({line ->
line}.replaceAll('date1', "$newdate1"))
.collect(Collectors.toList())
Files.write(outfile, replaced)
}
和
Stream<String> lines = Files.lines(outfile) {
List<String> replaced = lines
.map({line ->
line.replaceAll('date1', "$newdate1")})
.collect(Collectors.toList())
Files.write(outfile, replaced)
}
这种包装类型的隔离/脱离上下文行,不被识别为字符串,并且replaceAll
不起作用。
我不知道什么是正确的方法,让它发挥作用。
解决方案
你在 Java 和 Groovy 中有额外的大括号,这就是它不起作用的原因
List<String> lines = Files.lines(outputFile)
.map({ line -> line.replaceAll('date1', "$newdate1") })
.collect(Collectors.toList())
Files.write(outputFile, lines)
推荐阅读
- javascript - 我很难阅读文档
- r - KNN:“不允许缺失值”-> 我没有缺失值
- java - 后台线程意外死亡 [ContainerBackgroundProcessor[StandardEngine[Tomcat]]]
- bison - Bison在reduce之前和之后识别不同的token
- python - python:独立地移动张量内的每个矩阵
- python - 霍夫线检测到太多线
- javascript - 如何使用 jquery 删除一组元素的所有属性?
- typescript - 打字稿:使用特定对象作为函数 arg 实现接口
- php - Validation codeigniter 4中的字段标签语言
- node.js - 在猫鼬中预先保存中间件