调试时我必须检查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 并返回 bool 值的函数,但我看不到特征 mixin 上下文中的含义...
我的第一个猜测是这与构造函数或应用
等内容有关,但这只是一种直觉。
请教我!
最佳答案
Scala 中的
Set
实现了覆盖 apply
的 Function1[A, Boolean]
(A => Boolean
) 接口(interface)与contains
相同,因此Scala中的集合可以用作函数。
> val s = Set(1,2,3)
s: Set[Int] = Set(1, 2, 3)
> s(2)
res1: Boolean = true
> s.apply(3)
res2: Boolean = true
> s(23)
res3: Boolean = false
顺便说一句,这就是 Set 不变的原因。
关于Scala 匿名混入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51177162/