Scala动态创建xhtml元素

Don*_* Ch 0 indexing loops scala map

给出一个String列表

val www = List("http://bloomberg.com", "http://marketwatch.com");
Run Code Online (Sandbox Code Playgroud)

我想动态生成

<span id="span1">http://bloomberg.com</span>
<span id="span2">http://marketwatch.com</span>

def genSpan(web: String) = <span id="span1"> + web + </span>;

www.map(genSpan); // How can I pass the loop index?
Run Code Online (Sandbox Code Playgroud)

如何使用Scala map函数生成id(span1,span2),因为1和2是循环索引?或者唯一的方法是用于理解?

Rex*_*err 5

最简单的方法是使用zipWithIndex将列表转换为元组列表(value,index).在你的情况下,

def genSpan(web: String, id: Int) = {
  <span id={ "span%d".format(id) }> { web } </span>
}
www.zipWithIndex.map(x => genSpan(x._1,x._2+1))
Run Code Online (Sandbox Code Playgroud)

请注意,索引x._2从零开始,但您想从一开始,所以我在调用中添加了一个genSpan.另请注意,您可以通过包装Scala代码来使用Scala代码设置属性{}.