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是循环索引?或者唯一的方法是用于理解?
最简单的方法是使用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代码设置属性{}.