在调试时,我不得不检查 scala.collection.GenSetLike 文件。我在界面中遇到了这段代码:
trait GenSetLike[A, +Repr]
extends GenIterableLike[A, Repr]
with (A => Boolean)
with Equals
with Parallelizable[A, parallel.ParSet[A]] {
...
}
这种(A => Boolean)
的混合意味着什么?我尝试使用各种关键字进行搜索,但找不到满意的结果。
这种语法表示一个带有A并返回布尔值的函数,但是我无法在trait mixin上下文中看到含义...
我的第一个猜测是与诸如 constructor 或apply
之类的东西有关,但这只是一种直觉。
请教我!
答案 0 :(得分:1)
A => Boolean
是Function1
特质的语法糖
scala> def f[A] = (a: A) => true
f: [A]=> A => Boolean
上述lambda也可以写为
scala> def f[A]: Function1[A, Boolean] = (a: A) => true
f: [A]=> A => Boolean
答案 1 :(得分:1)
Set
实现了覆盖Function1[A, Boolean]
的{{1}}(A => Boolean
)接口,与apply
相同,因此Scala中的集合可用作函数。
contains
顺便说一下,这就是Set不变的原因。