我在理解这种语法时遇到了一些困难:
(as: List[A]) => val h = insert(e, as: _*)}
和
def insert(h: H, as: A*): H = as.foldLeft(h)((hh, a) => insert(a, hh))
是什么_*
意思A*
?
谢谢。
我在理解这种语法时遇到了一些困难:
(as: List[A]) => val h = insert(e, as: _*)}
和
def insert(h: H, as: A*): H = as.foldLeft(h)((hh, a) => insert(a, hh))
是什么_*
意思A*
?
谢谢。
A*
是一个定义为 vararg 的参数,它等价A...
于 Java。
例子:
scala> def f(i: Int*) = i.length
f: (i: Int*)Int
scala> f(1,2,3)
res50: Int = 3
:_*
是一个转换器,允许将 List 类型的参数转换为可变参数。
例子:
scala> f(List(1,2,3):_*)
res51: Int = 3
def insert(h: H, as: A*): H = as.foldLeft(h)((hh, a) => insert(a, hh))
A* 表示 vararg :您可以为方法提供任意数量的 As
(as: List[A]) => val h = insert(e, as: _*)}
在这种情况下,序列被转换为可变参数(单个列表被转换为具有 A 类型的 n 个单个参数)。
有时这是必要的,恕我直言,它在概念层面上没有太大变化(因为您仍然可以在两者上调用 fold , map 等)