您好我对Scala相对较新,我想试试这个Play 2 Framework并坚持使用以下代码(用作模板)
<article class="tasks">
@todoTasks.groupBy(_.project).map {
case (project, tasks) => {
<div class="folder" data-folder-id="@project.id">
<header>
<h3>@project.name</h3>
</header>
<ul class="list">
@tasks.map { task =>
<li data-task-id="@task.id">
<h4>@task.title</h4>
</li>
}
</ul>
</div>
}
}
</article>
这条线是什么意思?
@todoTasks.groupBy(_.project).map {
以及如何在Play 2 Framework的上下文中使用scala * .map。
如果您能够详细解释它,我会很感激,因为我对Scala相对较新(来自Java开发人员)
答案 0 :(得分:4)
groupBy()
将给定的lambda表达式(_.project
,从任务中提取project
)应用于集合的每个元素,并按该表达式的结果对元素进行分组。
因此,它将任务列表转换为元组列表(project, tasksOfThatProject)
。
现在,map()
将其lambda表达式应用于集合的每个元素(即每个元组)。
赋予map()
的Lambda表达式将元组呈现为项目名称及其任务列表。