2013-03-06 30 views
1

我一直試圖在Scala中實現我自己的getline版本。我想逐字閱讀字符。最近我得到的是:在Scala中純粹實現getline讀字符的特性

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

有什麼建議嗎?

+0

你爲什麼要做一個身份地圖? – 2013-03-06 19:03:09

+0

最後我會將這個值映射到一個對象 – Craysiii 2013-03-06 19:07:57

+0

你要求什麼? – sschaef 2013-03-06 19:51:42

回答

2

如果用「純」表示功能,請參閱Martin Ring的評論。

如果用「pure」表示「沒有Java」,那麼你不能使用上面的方法,因爲InputStream來自Java(以及任何你將要在某處使用某種Java的東西)。

這在理論上是可能避免System.in

Console.readLine // Reads a whole line for you 

毫無意義服用此分割成字符,並把它重新走到一起成一條線試。

你的大問題實際上是逐字符而不是逐行讀字符。用Java提供的工具並不容易,而且由於Scala是建立在JVM之上的,所以它無法做得更好。參見例如SO#1066318