如何理解这一行代码?
How to understand this code line?
这个code line在做什么?这是另一种表示法的语法糖吗?
def createItem(itemText: String) = <.li(itemText)
<.ul(props map createItem: _*) <-- this one
我假设您从纯语法的角度来看这行太奇怪了。
<
是另一个名字奇怪的实体 html_<^
的成员。
<
gizmo 是 HtmlTags 类型,特别是它有方法 li
和 ul
,对应于标签 <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).
这个code line在做什么?这是另一种表示法的语法糖吗?
def createItem(itemText: String) = <.li(itemText)
<.ul(props map createItem: _*) <-- this one
我假设您从纯语法的角度来看这行太奇怪了。
<
是另一个名字奇怪的实体 html_<^
的成员。
<
gizmo 是 HtmlTags 类型,特别是它有方法 li
和 ul
,对应于标签 <li>
和 <ul>
.
因此 <.ul(foobar)
是对方法 ul
的 <
的方法调用,参数为 foobar
.
foo: _*
语法用于将集合传递给可变参数方法。
总结一下:
props
是一些 的集合
- 使用函数
createItem
映射,结果为 - 作为可变参数传递给 的方法
- 对象/包
html_<^
ul
的 HtmlType
类型成员 <
所以,本质上,它只是构造了某种无序列表。
这里是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).