Java到Kotlin的翻译错误
使用最新IntelliJ IDEA 2018.3中最新的Kotlin 1.3.10插件,如果我将以下Java代码翻译成Kotlin:Java到Kotlin的翻译错误,kotlin,Kotlin,使用最新IntelliJ IDEA 2018.3中最新的Kotlin 1.3.10插件,如果我将以下Java代码翻译成Kotlin: BufferedReader br = Files.newBufferedReader(Paths.get("filename")); String line; while ((line = br.readLine()) != null) System.out.println(line); 我明白了: val br
BufferedReader br = Files.newBufferedReader(Paths.get("filename"));
String line;
while ((line = br.readLine()) != null)
System.out.println(line);
我明白了:
val br = Files.newBufferedReader(Paths.get("filename"))
var line: String
while ((line = br.readLine()) != null)
println(line)
while((line=br.nextLine())!=null)
是惯用的Java,但它的自动翻译会导致非法语法,因为Kotlin中的赋值不是表达式
我认为这些评论回答了我的两个问题,所以让我把它们汇编成一个答案
val br = Files.newBufferedReader(Paths.get("filename"))
var line: String
while (br.readLine().also { line = it} != null)
println(line)
但是,在这种情况下,更好的方法是:
val br = Files.newBufferedReader(Paths.get("filename"))
br.forEachLine {
println(it)
}
或者只是
File("filename").forEachLine {
println(it)
}
(它使用方便的方法,相当于Java的方便方法Files.lines(Path)
)我认为这些评论回答了我的两个问题,所以让我把它们汇编成一个答案
val br = Files.newBufferedReader(Paths.get("filename"))
var line: String
while (br.readLine().also { line = it} != null)
println(line)
但是,在这种情况下,更好的方法是:
val br = Files.newBufferedReader(Paths.get("filename"))
br.forEachLine {
println(it)
}
或者只是
File("filename").forEachLine {
println(it)
}
(它使用方便的方法,相当于Java的方便方法Files.lines(Path)
)我想上层的声明是唯一的途径部分重复的声明是已知的错误,请投票赞成我想上层的声明是唯一的途径部分重复的声明是已知的错误,请投票赞成