我是Kotlin的新手,我正在尝试做一个简单的任务-创建并写入文件。由于某些原因,use()
在printWriter()
上使用了块函数实际上并没有写。
File("test2.txt").printWriter().use { out ->
{
println("hmmm")
out.println("what's up")
log.info { "finished writing" }
}
}
实际上,似乎根本没有调用block函数-尽管文件本身已创建(但完全为空),但“ hmmm”和“完成的书写”都不会显示。
简单得多的writeText()
可以正常工作-创建文件并将给定的文本写入文件。
File("test3.txt").writeText("testing")
我的use()
版本在做什么?
编辑:这似乎是我的块函数的语法问题。看起来我还有一副括号?很想简短解释一下为什么它不起作用。
编辑2 :我想我现在明白了。我编写它的方式实质上是返回块函数本身,而不是通过它运行。
答案 0 :(得分:2)
所以问题是我编写块函数的方式导致它只返回内部块函数,而没有实际调用它。
有两种工作方式:
File("test2.txt").printWriter().use {
println("hmmm")
it.println("what's up")
log.info { "finished writing!" }
}
File("test2.txt").printWriter().use(fun(out) {
println("hmmm")
out.println("what's up")
log.info { "finished writing!" }
})
尽管如此,对于我来说writeText()
确实可以正常工作,而且哈哈短得多。