如何理解这一行代码?

How to understand this code line?

这个code line在做什么?这是另一种表示法的语法糖吗?

def createItem(itemText: String) = <.li(itemText)
<.ul(props map createItem: _*)                       <-- this one

我假设您从纯语法的角度来看这行太奇怪了。

< 是另一个名字奇怪的实体 html_<^ 的成员。

< gizmo 是 HtmlTags 类型,特别是它有方法 liul,对应于标签 <li><ul>.

因此 <.ul(foobar) 是对方法 ul< 的方法调用,参数为 foobar.

foo: _* 语法用于将集合传递给可变参数方法。

总结一下:

  • props 是一些
  • 的集合
  • 使用函数 createItem 映射,结果为
  • 作为可变参数传递给
  • 的方法 ul
  • HtmlType 类型成员 <
  • 对象/包html_<^

所以,本质上,它只是构造了某种无序列表。

这里是project github page对这些方法命名的简要解释:

Tags and tag attributes are namespaced; tags under < (because <.div looks similar to ), and attributes under ^ (because something concise was needed and you usually have many attributes which written on new lines all looks to point up back to the target tag).