【发布时间】:2015-06-19 17:53:12
【问题描述】:
这是我的代码:
def loadOperation(fileName:String): csvList = {
try{
val pattern = """^(.+);(\d{5});(4|2|31);(0|1);(.+);(\d+|\d+,\d+)$""".r
Source.fromFile(fileName).getLines().foldLeft(List[CsvEntry]())((csvList, currentLine) =>
currentLine match {
case pattern(organisation,yearAndQuartal,medKF,trueOrFalse,name,money) => new CsvEntry(organisation,yearAndQuartal.toInt,medKF.toInt,trueOrFalse.toInt,name,money) :: csvList
case default => csvList
})
} catch {
case one: java.io.FileNotFoundException => println("This file could not be found!")
}}
问题是我的代码不起作用,它总是显示以下错误:
发现类型不匹配:需要扩展为 List[CsvEntry] 的单元 csvList?
我该如何解决这个问题?
【问题讨论】:
-
cvsList的定义是什么?您将其作为函数返回类型,但在默认情况下您也将其用作值 -
ups 抱歉:"type csvList = CsvList[Entry]" "val list: csvList = List()"
-
当您捕捉到
FileNotFoundException时,您使用println打印出错误消息。因此类型将是Unit。 -
这没有意义,你将它用作一个值,作为 foldLeft 的参数和默认情况下表达式的返回值。范围内是否有一些实例也命名为 csvList?
-
是的,我已经定义了一个空列表,然后我使用正则表达式从输入文件中捕获内容并将其添加到我的 csvList 中......所以我将 CsvEntries 添加到我的 csvList 中。问题出在哪里?