在 Scala REPL 中,我可以将Seq[String]()
类型参数用作默认值Seq[T]
。
Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101).
Type in expressions to have them evaluated.
Type :help for more information.
scala> def d[T](foo: Seq[T] = Seq[String]()) = 12
d: [T](foo: Seq[T])Int
scala> d()
res0: Int = 12
在 IDEA 中尝试相同,它抱怨“Seq[String] 不符合预期的类型 Seq[T]”。为什么?
- IntelliJ IDEA 2016.2.4
- Scala 插件 2016.2.1
- 斯卡拉 2.11.7
注 1:对不起,我知道我的示例函数没有多大意义。但是,我的真实(和有用)功能过于复杂,无法在此处发布。
注意 2:起初,示例中的类型名称不是类型T ,而是Any,这不是一个好主意(因为它遮盖了 scala.Any)并引起了一些混乱。因此我解决了这个问题。