Scala 所说的可疑类型阴影是什么意思?
What does Scala mean by Suspicious Type Shadowing?
我正在实现一个 scala Set,我从这段代码中得到了这个错误
Suspicious shadowing by a Type Parameter: A
def remove[A](elemToRemove: A): MySet[A]
^
出于某种原因,该语言讨厌我传递的这个通用 A,这是为什么呢? “可疑的影翼”是什么意思?
https://scastie.scala-lang.org/NwcMObgnSxGjXA2clmaEyA,尽管 scastie 运行 陷入了不同的错误,但如果您从 remove[A]
中删除 [A]
,它将通过并执行
type mismatch;
found : exercises.part2afp.MySet[A(in class NonEmptySet)]
required: exercises.part2afp.MySet[A(in method remove)]
这是上下文:
case class EmptySet[A]() extends MySet[A] {
override def remove[A](elemToRemove: A): MySet[A] = this
问题是 remove[A]
中的 A
与 EmptySet[A]
中的 A
类型不同。
如果您希望它们是不同的类型,请使用不同的字母。
如果应该是同一类型,请从remove
中删除[A]
。
我正在实现一个 scala Set,我从这段代码中得到了这个错误
Suspicious shadowing by a Type Parameter: A
def remove[A](elemToRemove: A): MySet[A]
^
出于某种原因,该语言讨厌我传递的这个通用 A,这是为什么呢? “可疑的影翼”是什么意思?
https://scastie.scala-lang.org/NwcMObgnSxGjXA2clmaEyA,尽管 scastie 运行 陷入了不同的错误,但如果您从 remove[A]
中删除 [A]
,它将通过并执行
type mismatch;
found : exercises.part2afp.MySet[A(in class NonEmptySet)]
required: exercises.part2afp.MySet[A(in method remove)]
这是上下文:
case class EmptySet[A]() extends MySet[A] {
override def remove[A](elemToRemove: A): MySet[A] = this
问题是 remove[A]
中的 A
与 EmptySet[A]
中的 A
类型不同。
如果您希望它们是不同的类型,请使用不同的字母。
如果应该是同一类型,请从remove
中删除[A]
。