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] 中的 AEmptySet[A] 中的 A 类型不同。

如果您希望它们是不同的类型,请使用不同的字母。

如果应该是同一类型,请从remove中删除[A]