0

我正在使用带有 Scala的 Kaggle 数据集进行一些探索性分析。我要做的一件事是为一个名为“Taxpayer”的案例类创建一个伴随对象,如下所示:

case class Taxpayer(
                age: Int,
                workclass: String,
                education: String,
                educationNum: Int,
                maritalStatus: String,
                occupation: String,
                relationship: String,
                race: String,
                sex: String,
                capitalGain: Int,
                capitalLoss: Int,
                hoursPerWeek: Int,
                nativeCountry: String,
                income: String
              )

给定这个案例类,我必须创建一个伴随对象并定义以下函数:

  • printData:打印以下格式“$workclass - $occupation - $nativeCountry - $income”
  • apply:不接受任何参数并返回具有 Int fields = -1 和 String fields = "unknown" 的类 Taxpayer 的实例

我尝试了以下方法,但它不起作用(“预期的类或对象定义”):

object Taxpayer{


def printData(c: Taxpayer) = {
    println(s"${c.workclass} - ${c.occupation} - ${c.nativeCountry} - ${c.income}")
    def apply(age: Int = -1, workclass: String = "unknown", education: "unknown", educationNum: Int = -1, maritalStatus: "unknown",
               occupation: "unknown", relationship: "unknown", race: "unknown", sex: "unknown", capitalGain: Int = -1,
               capitalLoss: Int = -1, hoursPerWeek: Int = -1, nativeCountry: "unknown", income: "unknown") = {
      new Taxpayer(age, workclass, education, educationNum, maritalStatus, occupation, relationship,
        race, sex, capitalGain, capitalLoss, hoursPerWeek, nativeCountry, income)
    }
  }
}

如何定义一个适用于我的数据集行的函数?先感谢您!:)

4

1 回答 1

1

尝试

object Taxpayer{
  def printData(c: Taxpayer) = {
    println(s"${c.workclass} - ${c.occupation} - ${c.nativeCountry} - ${c.income}")
    def apply(age: Int = -1, workclass: String = "unknown", education: String = "unknown", educationNum: Int = -1, maritalStatus: String = "unknown",
              occupation: String = "unknown", relationship: String = "unknown", race: String = "unknown", sex: String = "unknown", capitalGain: Int = -1,
              capitalLoss: Int = -1, hoursPerWeek: Int = -1, nativeCountry: String = "unknown", income: String = "unknown") = {
      new Taxpayer(age, workclass, education, educationNum, maritalStatus, occupation, relationship,
        race, sex, capitalGain, capitalLoss, hoursPerWeek, nativeCountry, income)
    }
  }
}

它在 2.13.2 中编译https://scastie.scala-lang.org/3zq3SDzVTOuHtpgC6nyPIA

如果你想用默认值声明方法参数,你应该这样做education: String = "unknown"。当您编写时,education: "unknown"您会做一些不同的事情(您声明没有默认值的单例类型参数)。

于 2020-06-14T11:10:38.553 回答