Scala динамически создает элементы xhtml - PullRequest
0 голосов
/ 22 мая 2010

Учитывая список строк

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 для генерации идентификаторов (span1, span2), как 1и 2 являются индексами цикла?Или это единственный способ использовать для понимания?

1 Ответ

5 голосов
/ 23 мая 2010

Самый простой способ - использовать 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 в {}.

...