我知道可以使用while循环使用readLine函数从stdin提取多行输入。
kotlin中是否有一个函数可以从stdin一次检索所有行,而无需使用JVM API?
答案 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)。
最后,我们仅将结果打印到标准输出。