gpt4 book ai didi

kotlin - Kotlin Lambda不在内部调用代码

转载 作者:行者123 更新时间:2023-12-02 13:15:12 27 4
gpt4 key购买 nike

我遇到了最奇怪的事情。

可以说我有一个名为“lines.txt”的文本文件。该文件包含键值对中的行。

test:100
test1:200
test2:300
test3:400

如果我在Kotlin中读取此文件,则列表不是空的,但是不会调用输出流中的循环。
object App {

@JvmStatic
fun main(args: Array<String>) {

// file containing lines of text
val lines = Files.readAllLines(Paths.get("./hashes.txt"))

// not empty
println(lines.size)

// write back a modified version
PrintWriter(FileWriter(File("./lines2.txt"))).use { out -> {

// this doesn't get called
println(lines.size)
lines.forEach {
out.println(it.split(":")[0])
}

}
}

}

}

我不明白为什么会这样,如果有人能启发我,那真是太棒了。

最佳答案

列表不为空。单个println(lines.size)会向您显示,因为从未调用过println

您只是一对花括号太多了。

将您的代码更改为

   ...
PrintWriter(FileWriter(File("./lines2.txt"))).use { out ->

// list is empty??
println(lines.size)
lines.forEach {
out.println(it.split(":")[0])
}
}
...

原因是,lambda不需要大括号括起来。

所以不要写
out -> { ... }

写吧
out -> ...

关于kotlin - Kotlin Lambda不在内部调用代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46238953/

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