下面的代码似乎工作正常。但我的问题是为什么函数被定义为将字符串作为输入但是在底部,它已经接受了一些输入整数?
案例类
TempData(year:Int, month:String, Prec:Double, Maxtemp:Int, Meantemp:Int, Mintemp:Int)
def parseLine(line:String):TempData = {
val p = line.split(",")
TempData(p(1).toInt, p(3).toString, p(5).toDouble, p(6).toInt, p(8).toInt, p(10).toInt)
}
//> parseLine: (line: String)Tests.TempData
parseLine("Verizon, 2017, Alpha, October, gentlemen, 10.3, 5, Dallas, 67, schools, 42")
//> res0: Tests.TempData = TempData(2017, October, 10.3, 5, 67, 42)
答案 0 :(得分:0)
您的函数只需一个String
作为参数..
def parseLine(line: String): TempData
一个String
正好传递给它:
scala> "Verizon,2017,Alpha,October,gentlemen,10.3,5,Dallas,67,schools,42"
res0: String = Verizon,2017,Alpha,October,gentlemen,10.3,5,Dallas,67,schools,42
这些数字只是纯文本,是String
的一部分,没有涉及整数。它是您的函数体,可以分割String
并从中提取Int
。
编辑:关于帖子的标题:所有这些都与您的TempData
案例类无关。看起来您将对case类构造函数的调用与对parseLine
的调用混淆。
答案 1 :(得分:0)
定义的函数parseLine(line: String)
采用String
类型参数,并且您已正确传递它。令人困惑的是,您正在考虑字符串中存在的数字为整数(Int),这是不正确的。字符串中的数字仅为String
类型,因为您已将它们括在引号中。您还可以推断使用toInt
将数字从String
转换为Int
类型。