我一直在尝试在 Scala 中实现我自己的 getline 版本。我想逐字阅读。我得到的最接近的是:
def in_string: List[Char] = {
io.Source.fromInputStream(System.in)
.takeWhile(_ != '\n')
.toList
}
有什么建议么?
如果“纯”是指功能性,请参阅 Martin Ring 的评论。
如果“纯”是指“没有 Java”,那么您不能再使用上述方法,因为InputStream
它来自 Java(无论您做什么,您都会在某处使用一些 Java)。
理论上可以避免System.in
:
Console.readLine // Reads a whole line for you
把它分解成字符并重新组合成一行是没有意义的。
您更大的问题实际上是逐个字符而不是逐行读取。使用 Java 中提供的工具来做到这一点并不容易,而且由于 Scala 构建在 JVM 之上,它真的不能做得更好。参见例如 SO# 1066318。