【问题标题】:How to read all lines from stdin in kotlin?如何从 kotlin 中的标准输入读取所有行?
【发布时间】:2019-03-19 00:04:54
【问题描述】:

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

kotlin 中是否有一个函数可以在不使用 JVM api 的情况下一次从标准输入检索所有行?

【问题讨论】:

标签: kotlin stdin


【解决方案1】:
val input = generateSequence(::readLine).joinToString("\n")
print(input)

第一行从stdin获取多行输入,放入变量中。

generateSequence 是 kotlin 标准库 kotlin.sequences 包中的一个函数,它接受另一个函数并调用它,直到它返回 null。最后它会返回一个Sequence的实例,也就是一个可以迭代的元素序列。

::readLine 部分是一种将用于从标准输入读取的readLine 函数传递给generateSequence 函数的方法。仅调用 readLine() 而没有 :: 将导致编译器错误,因为 generateSequence 需要一个 lambda,而不是一个字符串。

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

最后在第二行我们只是将结果打印到标准输出。

【讨论】:

  • 请解释一下
猜你喜欢
  • 2022-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 2010-11-29
相关资源
最近更新 更多