use*_*970 3 scala string-interpolation scala-2.10
这是一个有点晦涩的问题,但是在 Scala 的字符串插值中循环的最佳方法是什么?例如,如果你想这样做
html"""<ul>
${
for (todoItem <- todoList) {
html"""<li>TODO: ${todoItem}</li>"""
}
}
</ul>"""
Run Code Online (Sandbox Code Playgroud)
我看不到累积内部 html 类的简洁方法,以便字符串插值器可以使用它。我唯一能想到的是
html"""<ul>
${
var htmlList=List.empty[Html]
for (todoItem <- todoList) {
htmlList :+ html"""<li>TODO: ${todoItem}</li>"""
}
htmlList
}
</ul>"""
Run Code Online (Sandbox Code Playgroud)
并在我的自定义 html 插值器中添加对它的支持
无论您是否在字符串插值中工作都没有任何区别。这实际上是字符串插值的重点:在代码块中,您可以使用该语言的所有功能和特性,就像任何其他块一样。
您应该以函数式风格编写此代码,您可以yield在for循环中或列表中的地图中使用它:
html"""<ul>
${
for (todoItem <- todoList) yield html"""<li>TODO: $todoItem</li>"""
}
</ul>"""
html"""<ul>
${
todoList.map{ todoItem => html"""<li> ODO: $todoItem</li>""" }
}
</ul>"""
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
881 次 |
| 最近记录: |