我的案例分类为
case class Attendance(List(name,totalDay))
我有三个变量
val ana = 0
val mario = 33
val romero = 11
我必须创建出勤类的对象,例如 仅当出勤率大于零(如上述我应有的情况)时,才能显示姓名和出勤率
Attendance((Mario,33),(Romero,12))
答案 0 :(得分:5)
您的代码不仅在变量和类命名方面与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
的{{1}}。在您的示例中未定义这些元素。
您要执行的操作是:
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
}
我希望这会有所帮助。