2010-05-22 103 views
0

给出一个字符串列表斯卡拉创建XHTML元素动态

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

我要动态地生成

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

如何使用Scala的地图功能生成的ID(SPAN1,跨度2),如1和2是循环索引? 或者唯一的方法是用于理解?

回答

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

注意的是,指数,x._2,从零开始,但你想从一个开始,所以我加了一个在调用genSpan。还要注意,你可以通过将Scala代码包装在{}中来使用Scala代码来设置属性。

+1

需要包装 “网” 为好, <跨度ID = { “跨度%d” .format(ID)}> + {幅} + 谢谢! – portoalet 2010-05-22 20:42:23

+0

@portoalet - 是的,哎呀!现在修复。 (顺便说没有'+' - 输出XML块内的所有内容。) – 2010-05-22 22:11:07