scala案例类接受什么输入?

时间:2017-07-30 19:17:48

标签: scala

下面的代码似乎工作正常。但我的问题是为什么函数被定义为将字符串作为输入但是在底部,它已经接受了一些输入整数?

案例类

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)

2 个答案:

答案 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类型。