尝试在 scala 中对 Set 使用类型别名时出现值未找到错误

Abd*_*man 1 types scala

为什么这在 scala 中不起作用?

type IntSet = scala.collection.immutable.Set[Int]

IntSet(1)
Run Code Online (Sandbox Code Playgroud)

我收到“未找到 IntSet”

谢谢。

dca*_*tro 6

请记住,这IntSet(1)相当于IntSet.apply(1),其中IntSet是一个对象,而不是一个类/特征。

问题是您已经为Set[A] Trait定义了别名,但没有为其伴生对象定义别名。

如果您想apply使用类型别名IntSet,则还必须定义一个名为的对象IntSet

object IntSet {
  def apply[A](elems: Int*): IntSet = Set(elems: _*)
}
Run Code Online (Sandbox Code Playgroud)

现在将编译:

IntSet(1)
Run Code Online (Sandbox Code Playgroud)