开发者

Scala create xhtml elements dynamically

Given a String list

val www = List("http://bloomberg.com", "http://marketwatch.com");

I want to dynamically generate

<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?

How can I use the Scala map function to generate the ids (span1, span2), as 1 an开发者_如何学Pythond 2 are the loop indexes? Or is the only way is to use for comprehension?


The easiest way is to use zipWithIndex which turns a list into a list of tuples (value,index). In your case,

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

Note that the index, x._2, starts from zero but you want to start from one, so I added one in the call to genSpan. Note also that you can set attributes using Scala code by wrapping the Scala code in {}.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜