В 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, потому что я использую версию Groovy, предшествующую 2.6, это не так.Я не могу это изменить, это тот, который используется в Каталоне.Я получаю сообщение об ошибке «неожиданный токен ->»
Я пытался заключить лямбда-функцию в квадратные скобки этими двумя способами, но ни один из них не работает:
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
не работает.
Я не знаю, как правильно это сделать, чтобы заставить его работать.