在scala的字符串内插中循环

问题描述 投票:3回答:2

这是一个晦涩的问题,但是在Scala的字符串内插中循环的最佳方法是什么?例如,如果您想这样做

  html"""<ul>
  ${
    for (todoItem <- todoList) {
      html"""<li>TODO: ${todoItem}</li>"""
    }
  }
  </ul>"""

我看不出任何简单的方法来累积内部html类,以便字符串插值器可以使用它。我唯一能想到的是

  html"""<ul>
  ${
    var htmlList=List.empty[Html]
    for (todoItem <- todoList) {
      htmlList :+ html"""<li>TODO: ${todoItem}</li>"""
    }
    htmlList
  }
  </ul>"""

并在我的自定义html插值器中添加对此的支持

scala scala-2.10 string-interpolation
2个回答
5
投票

无论您是否在字符串插值中工作都没有任何区别。实际上,这就是字符串插值的要点:在代码块中,您可以使用该语言的所有功能和特性,就像在任何其他块中一样。


0
投票

具有字符串输出的样本,最多从列表的顶部获取3个元素。 @ rex-kerr的答案是正确的,但是他正在生成html元素。在我的示例中,我正在生成文本作为输出。至关重要的想法是mkString通话。

© www.soinside.com 2019 - 2024. All rights reserved.