Проблема с созданием сопутствующего объекта для класса case в Scala
Я провожу исследовательский анализ, используя набор данных Kaggle с помощью Scala. Одна из вещей, которые мне нужно сделать, - это создать сопутствующий объект для класса случая под названием "Налогоплательщик" следующим образом:
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: выведите следующий формат: "$ рабочий класс - $ занятие - $nativeCountry - $ доход"
- apply: не принимает параметров и возвращает экземпляр класса Taxpayer с Int fields = -1 и String fields = "unknown"
Я пробовал следующее, но это не работает ("ожидаемое определение класса или объекта"):
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)
}
}
}
Как я могу определить функцию, которая работает со строками моего набора данных? Заранее спасибо!:)
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"
вы делаете что-то другое (вы объявляете параметр типа singleton без значения по умолчанию).