如何从Kotlin的stdin中读取所有行?

时间:2019-03-19 00:04:55

标签: kotlin stdin

我知道可以使用while循环使用readLine函数从stdin提取多行输入。

kotlin中是否有一个函数可以从stdin一次检索所有行,而无需使用JVM API?

1 个答案:

答案 0 :(得分:0)

maintain

第一行从stdin获取多行输入并将其放入变量中。

val input = generateSequence(::readLine).joinToString("\n") print(input) 是来自kotlin标准库generateSequence包的函数,该函数接受另一个函数并对其进行调用,直到返回null。最后,它将返回Sequence的一个实例,该实例是可以迭代的元素序列。

kotlin.sequences部分是一种将::readLine函数(用于从stdin读取)传递给readLine函数的方法。仅调用generateSequence但不使用readLine()会导致编译器错误,因为::期望使用lambda而不是字符串。

joinToString方法属于Sequence类。它将迭代其元素,并使用给定的分隔符将它们连接起来,在这种情况下,分隔符是一个新行(\ n)。

最后,我们仅将结果打印到标准输出。