私は自分のバージョンのgetlineをScalaに実装しようとしています。文字ごとに読みたい。私が得た最も近いものは次のとおりです。
def in_string: List[Char] = {
io.Source.fromInputStream(System.in)
.takeWhile(_ != '\n')
.toList
}
助言がありますか?
「純粋」とは機能的であることを意味する場合は、MartinRingのコメントを参照してください。
「純粋」が「Javaなし」を意味する場合も、InputStream
Javaからのものであるため、上記の方法では使用できません(そして、何をするにしても、どこかでJavaを使用することになります)。
理論的には回避することが可能System.in
です:
Console.readLine // Reads a whole line for you
これを文字に分解して、再び1行に戻すのは意味がありません。
あなたのより大きな問題は、実際には行ごとではなく文字ごとに読むことです。これは、Javaで提供されているツールを使用して行うのは簡単ではありません。また、ScalaはJVM上に構築されているため、これ以上のことはできません。たとえば、SO#1066318を参照してください。