Я пытаюсь выполнить перенос приложения на Scala 2.10.0-M2. Я вижу хорошие улучшения с лучшими предупреждениями от компилятора. Но у меня также есть куча ошибок, все связанные со мной сопоставление от Enumeration.values
.Перечисление и сопоставление с помощью Scala 2.10
Я приведу вам простой пример. Я хотел бы иметь перечисление, а затем предварительно создать кучу объектов и построить карту, которая использует значения перечисления в качестве ключей, а затем некоторые соответствующие объекты в качестве значений. Например:
object Phrase extends Enumeration {
type Phrase = Value
val PHRASE1 = Value("My phrase 1")
val PHRASE2 = Value("My phrase 2")
}
class Entity(text:String)
object Test {
val myMapWithPhrases = Phrase.values.map(p => (p -> new Entity(p.toString))).toMap
}
В настоящее время это используется, чтобы отлично работать на Scala 2.8 и 2.9. Но 2.10.0-M2 дает мне следующее предупреждение:
[ERROR] common/Test.scala:21: error: diverging implicit expansion for type scala.collection.generic.CanBuildFrom[common.Phrase.ValueSet,(common.Phrase.Value, common.Entity),That]
[INFO] starting with method newCanBuildFrom in object SortedSet
[INFO] val myMapWithPhrases = Phrase.values.map(p => (p -> new Entity(p.toString))).toMap
^
Что вызывает это и как это исправить?
Я не получаю это с фрагменте кода выше. Является ли эта часть более крупного файла и существуют ли там другие определения, импорт? –
Нет, это просто искусственный пример, самый короткий способ вызвать ошибку компиляции. Как правило, вместо «объекта теста» с использованием карты было бы большее приложение. – vertti
Я думаю, что это ошибка ... ну, не совсем ошибка, но, конечно, непреднамеренное следствие. Я бы открыл билет об этом. –