这段Scala代码意味着什么

时间:2014-03-24 07:39:52

标签: java scala playframework-2.0

您好我对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开发人员)

1 个答案:

答案 0 :(得分:4)

groupBy()将给定的lambda表达式(_.project,从任务中提取project)应用于集合的每个元素,并按该表达式的结果对元素进行分组。

因此,它将任务列表转换为元组列表(project, tasksOfThatProject)

现在,map()将其lambda表达式应用于集合的每个元素(即每个元组)。

赋予map()的Lambda表达式将元组呈现为项目名称及其任务列表。