1

我一直在尝试在 Scala 中实现我自己的 getline 版本。我想逐字阅读。我得到的最接近的是:

def in_string: List[Char] = {
io.Source.fromInputStream(System.in)
  .takeWhile(_ != '\n')
  .toList
}

有什么建议么?

4

1 回答 1

2

如果“纯”是指功能性,请参阅 Martin Ring 的评论。

如果“纯”是指“没有 Java”,那么您不能再使用上述方法,因为InputStream它来自 Java(无论您做什么,您都会在某处使用一些 Java)。

理论上可以避免System.in

Console.readLine  // Reads a whole line for you

把它分解成字符并重新组合成一行是没有意义的。

您更大的问题实际上是逐个字符而不是逐行读取。使用 Java 中提供的工具来做到这一点并不容易,而且由于 Scala 构建在 JVM 之上,它真的不能做得更好。参见例如 SO# 1066318

于 2013-03-06T20:47:29.527 回答