未在File.printWriter()

时间:2018-12-16 08:02:02

标签: kotlin

我是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 :我想我现在明白了。我编写它的方式实质上是返回块函数本身,而不是通过它运行。

1 个答案:

答案 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()确实可以正常工作,而且哈哈短得多。