我尝试获取多个用户输入以在Scala IDE中打印它们。
我试过这段代码
println(scala.io.StdIn.readLine())
可以工作,因为IDE接受我的输入然后在行中打印它,但这仅适用于单个输入。 我希望代码能够输入多个输入,直到只输入换行符。例如,
1
2
3
所以我决定我们需要一个输入的迭代器,这导致我分别尝试以下两行代码
var in = Iterator.continually{ scala.io.StdIn.readLine() }.takeWhile { x => x != null}
和
var in = io.Source.stdin.getLines().takeWhile { x => x != null}
不幸的是,由于IDE根本没有接受我的输入,所以它们都不起作用。
答案 0 :(得分:3)
你真的很亲密。
val in = Iterator.continually(io.StdIn.readLine).takeWhile(_.nonEmpty).toList
这将读取输入,直到输入空字符串并将输入保存在List[String]
中。 toList
的原因是因为Iterator
元素在调用next
之前不会变为现实,因此在需要下一个元素之前不会调用readLine
。转换为List
会创建Iterator
的所有元素。
<强>更新强>
正如@ vossad01指出的那样,这可以使意外输入更安全。
val in = Iterator.continually(io.StdIn.readLine)
.takeWhile(Option(_).fold(false)(_.nonEmpty))
.toList