В Scala REPL Я могу использовать Seq[String]()
в качестве значения по умолчанию для параметра типа Seq[T]
.IntelliJ IDEA: значения параметров по умолчанию в Scala
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 Plugin 2016.2.1
- Scala 2.11.7
Примечание 1: К сожалению, я знаю, что мой пример функции делает не имеет большого смысла. Однако моя настоящая (и полезная) функция излишне сложна, чтобы опубликовать ее здесь.
Примечание 2: Во-первых, вместо типа T мое имя типа в примере был Любой, который не является хорошей идеей (потому что слежка scala.Any) и вызвало некоторое замешательство. Таким образом, я исправил это.
Я пробовал тот же код в eclipse с той же версией scala. К моему удивлению, я не получаю никаких ошибок – BDR
Как ни странно, если я скопирую вашу часть кода в IntelliJ, у меня будет тот же красный подчеркнутый текст. Но процесс компиляции просто прекрасен. Я предполагаю, что это ошибка в плагине IntelliJ Scala, вот и все. – Polentino
Это действительно ошибка в совместимости с плагином IntelliJ Scala. Я создал проблему: https://youtrack.jetbrains.com/issue/SCL-10892 –