1

私は自分のバージョンのgetlineをScalaに実装しようとしています。文字ごとに読みたい。私が得た最も近いものは次のとおりです。

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

助言がありますか?

4

1 に答える 1

2

「純粋」とは機能的であることを意味する場合は、MartinRingのコメントを参照してください。

「純粋」が「Javaなし」を意味する場合も、InputStreamJavaからのものであるため、上記の方法では使用できません(そして、何をするにしても、どこかでJavaを使用することになります)。

理論的には回避することが可能System.inです:

Console.readLine  // Reads a whole line for you

これを文字に分解して、再び1行に戻すのは意味がありません。

あなたのより大きな問題は、実際には行ごとではなく文字ごとに読むことです。これは、Javaで提供されているツールを使用して行うのは簡単ではありません。また、ScalaはJVM上に構築されているため、これ以上のことはできません。たとえば、SO#1066318を参照してください。

于 2013-03-06T20:47:29.527 に答える