为什么在隐式 def 中为可变参数传递单个子类型会导致类型不匹配?

Why does passing in a single subtype for a varargs in an implicit def give a type mismatch?

给定以下代码片段

sealed trait A
case class B() extends A

object Creator {
  def apply(plus: Plus) = plus()
}

sealed trait Plus {
  def apply(): Int
}

object Plus {
  implicit def supersWrapper(supers: A*) = // Changing this to just A works
    new Plus {
      def apply(): Int = 5
    }
}

我收到以下错误

scala> Creator(B())
<console>:12: error: type mismatch;
found   : B
required: Plus
Creator(B())

如果我将超级类型更改为 A,我将得到以下结果

scala> Creator(B())
res9: Int = 5

为什么我会出现上述行为?我知道我可以为 A 和 A* 定义两个隐式定义,但我想知道为什么我需要这样做。

隐式转换函数始终只能应用于一个参数。因此 implicit def supersWrapper(supers: A*) 没有意义,但 scalac 不会为此生成警告。