首先我是这个网站的新手和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的方式来做到这一点。我很感激你的帮助。 THX!
答案 0 :(得分:4)
你可以这样做:
val s = Source.fromFile("fileWithNumbers")
val nums = for {
line <- s.getLines
num <- line.split(',')
} yield num.toInt
这将获取单个列表中所有行的所有数字。请注意,如果您的字符串无法转换为Int
,则会引发异常。