簡體   English   中英

播放框架Scala模板

[英]Play Framework Scala Template

我已經使用Play Framework了一段時間,但我幾乎是Scala模板的新手。 對於我來說,作為C熟悉的語言開發人員,有時看起來有點奇怪

我想知道是否有人在這里可以幫助我更好地理解這些代碼我從http://www.playframework.com/documentation/2.2.x/JavaGuide3(Zentask示例)中獲取了它

@(projects: List[Project], todoTasks: List[Task])

@main("Welcome to Play") {

    <header>
        <hgroup>
            <h1>Dashboard</h1>
            <h2>Tasks over all projects</h2>
        </hgroup>
    </header>

    <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>
                                @if(task.dueDate != null) {
                                    <time datetime="@task.dueDate">
                                        @task.dueDate.format("MMM dd yyyy")</time>
                                }

                                @if(task.assignedTo != null && task.assignedTo.email != null) {
                                    <span class="assignedTo">@task.assignedTo.email</span>
                                }
                            </li>
                        }
                    </ul>
                </div>
            }
        }
    </article>
}

這3行對我來說真的很困惑:

@todoTasks.groupBy(_.project).map {

case (project, tasks) => {

@tasks.map { task =>

如果有人能夠更詳細地向我解釋這3條線路到底在做什么,我真的很感激嗎?

多謝你們

好的,所以這里有幾個轉換。

@todoTasks.groupBy(_.project)說todoTask有一個名為project的字段,我們應該將todoTasks列表轉換為一個Map,其中項目是鍵,而值都是與鍵匹配的todoTasks。

.map { case (project, tasks) => {表示我們現在有一個Map,其中鍵是project ,值是一個tasks列表。 如果我們有這兩個項目(項目,任務),那么我們應該對每個任務做一些事情,接下來的是=>

提示,作為一名java play開發人員,您不需要深入了解scala,只需在java控制器中進行數據轉換即可。

我認為這些都不是Play模板特有的,而是慣用的功能Scala的例子。 中間行使用模式匹配與匿名函數, 本教程非常清楚地介紹了 另外兩個是在集合上調用函數,它們將函數本身作為參數。 這些被稱為“高階函數”,是函數式編程的關鍵工具之一。 特別是.map是FP的關鍵。 Daniel Spiewak的Scala Collections For Easyily Bored系列是開始使用這些功能的好地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM