如何理解这段代码?

时间:2018-03-12 20:58:41

标签: scala scala.js scalajs-react

code line做什么?这是另一种符号的语法糖吗?

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

1 个答案:

答案 0 :(得分:3)

我认为你从纯粹的语法角度来看这条线太奇怪了。

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

< Gizmo属于HtmlTags类型,特别是它有方法liul,对应于标记<li>和{{1 }}

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

foobar语法用于将集合传递给vararg方法。

总结:

  • foo: _*
  • 的一些集合
  • 使用函数props进行映射,然后结果为
  • 作为vararg传递给
  • 的方法createItem
  • ul - 类型成员HtmlType
  • 对象/包<

因此,基本上,它只是构造了某种无序列表。

以下是project github page关于这些方法命名的简要说明:

  

标签和标签属性是命名空间;标签下&lt; (因为&lt; .div看起来类似于)和^下的属性(因为需要简洁的东西,你通常有许多写在新行上的属性,所有看起来都指向目标标记)。