1

首先我是这个网站和 Scala 的新手,所以请原谅任何错误:)

假设我有一个文件,其中包含用逗号分隔的数字,如下所示:12,25,32...

我想要一个列表中的这些数字(与它们在文件中的顺序相同!)。我的问题是,当我阅读文件的内容并使用以下方法将其转换为列表时:

val myList = Source.fromFile("fileWithNumbers").toList

我最终得到每个数字和逗号作为单个项目。为了得到我想要的,我想出了以下功能:

def numsfromlist(a: List[Char], res: List[Int], temp: String) : List[Int] =  {
if(a.isEmpty)
    res.reverseenter code here
else if(a.head == ',' )
    numsfromlist(a.tail, temp.toInt :: res, "")
else 
    numsfromlist( a.tail, res, temp :+ a.head)}

然后我这样称呼

val tailres = numsfromlist(Source.fromFile("fileWithNumbers").toList, Nil, "")

但我认为必须有一种更好、更类似于 scala 的方式来做到这一点。我会很感激帮助。谢谢!

4

1 回答 1

4

例如,您可以这样做:

val s = Source.fromFile("fileWithNumbers")
val nums = for {
  line <- s.getLines
  num  <- line.split(',')
} yield num.toInt

这将为您提供单个列表中所有行的所有编号。请注意,如果您有一个无法转换为Int.

于 2013-07-21T23:31:50.697 回答