如何在单个块中使用scala和html代码

如何在单个块中使用scala和html代码,html,scala,playframework,playframework-2.0,scala-template,Html,Scala,Playframework,Playframework 2.0,Scala Template,在案例1中,为什么选项html元素没有绑定到select中 案例1:不工作 @base{ <select name="" value="" class="custom-select"> @{ println("1"); // this is printed to console <option value="test">i</option> // this is not shown in html pr

在案例1中,为什么选项html元素没有绑定到select中

案例1:不工作

@base{
  <select name="" value="" class="custom-select">
  @{
    println("1"); // this is printed to console             
    <option value="test">i</option> // this is not shown in html
    println("2"); // this is printed to console                     
  }
  </select>
}
@base{
@{
println(“1”);//这是打印到控制台的
i//这不会在html中显示
println(“2”);//这是打印到控制台的
}
}
案例2:工作

@base{
  <select name="" value="" class="custom-select">
  @{
    println("1"); // this is printed to console             
    <option value="test">i</option> // this is shown in html                    
  }
  </select>
}
@base{
@{
println(“1”);//这是打印到控制台的
i//这以html格式显示
}
}
更新:

如何创建将所有选项元素绑定到scala模板的循环?以下代码不绑定任何选项元素。实际返回类型是什么?空行

<select name="" value="" class="custom-select">
@{
    for(i <- 1 to 10) {
        <option value="@i">@i</option>
    }
}
</select>

@{

对于(i而言,代码块
@{…}
是一个闭包,它具有从上一条语句推断的返回类型

在第一种情况下,返回类型被推断为
Unit
,因为
println(…)
返回
Unit


在第二个块中返回html。

我不能直接回答第一个问题,但假设@korefn和@om nom nom是正确的;该块是一个闭包,并将返回解释为一个空

针对您的更新,我将尝试:

@for(i <- 1 to 10) {
    <option value="@i">@i</option>
}

@for(scala中的i,作为返回结果处理的块的最后一条语句,在第一种情况下,您将得到单元aka void(println的结果),选项被简单地抛出,我已经意识到@for解决方案是有效的,但我想了解如何使用@{…}来实现这一点闭包。原因是我必须在for循环之前写大约10行scala代码。这10行代码创建列表,列表将被循环。好的,我明白了。我是scala新手,但根据上面的逻辑,使用循环将选项添加到集合中,然后将集合映射到块的最后一行上的打印语句,这样做不起作用吗?我是al所以考虑使用print语句,但不知道怎么做。我是Scala的超级新手。是的,我也是。块构造激发了我的兴趣,所以感谢你介绍我。我将玩一玩,如果我得到预期的输出,我将编辑我的答案。如果你先找到它,请ping我,我想看看工作方法。