Нужно добавить кортеж в случае переменной класса при условии - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть класс дела как

case class Attendance(List(name,totalDay))

, и у меня есть три переменные

val ana = 0
val mario = 33
val romero = 11

Я должен создать объект класса посещаемости, такой как они имеют имя и посещаемость, только еслипосещаемость больше нуля, как указано выше, у меня должно быть

Attendance((Mario,33),(Romero,12))

1 Ответ

6 голосов
/ 11 апреля 2019

Ваш код не только очень далек от того, что считается лучшей практикой в ​​Scala с точки зрения именования переменных и классов, но также имеет несоответствия:

Сначала вы показываете фрагмент кода:

// --- WRONG --- //
val Ana = 0
val Mario = 33
val Romero = 11

И затем вы показываете фрагмент кода

// --- WRONG --- //
Attendance((Mario,33),(Romero,12))

Проблема в том, что в этой ситуации (Mario, 33) означает просто (33, 33), потому что Mario - это переменная, которую вы присвоили 33.Вместо этого вам следует сделать следующее:

val ana = ("Ana", 0)
val mario = ("Mario", 33)
val romero = ("Romero", 11)

Еще одно несоответствие:

// --- WRONG --- //
case class attendance(List(name,totalDay))

Это не скомпилируется.При написании List(name, totalDay) вы определяете List, содержащий два элемента, name и totalDay.Эти элементы не определены в вашем примере.

Вместо этого вы хотите:

case class Attendance(attendees: List[(String, Int)])

Что означает attendees: List[(String, Int)]?

Это означает, что вы определяетепараметр для вашего класса дел Attendance, и этот параметр называется attendees и имеет тип List[(String, Int)] (говорят: " Список кортежей, каждый из которых состоит из строки и целого числа ")

Тогда вы можете использовать это:

val listOfAttendees: List[(String, Int)] = ??? // Not implemented yet
val attendance = Attendance(listOfAttendees)

Но как вы делаете listOfAttendees?

Ответ filter:

val allAttendees = List(ana, mario, romero)
val filteredAttendees = allAttendees.filter {
   case (name, days) => days > 0
}

Соберите все вместе:

val ana = ("Ana", 0)
val mario = ("Mario", 33)
val romero = ("Romero", 11)

case class Attendance(attendees: List[(String, Int)])

val allAttendees = List(ana, mario, romero)

val filteredAttendees = allAttendees.filter {
   case (name, days) => days > 0
}

val attendance = Attendance(filteredAttendees)

Попробуйте!


Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...