Отсутствует ошибка типа параметра в методе Iterable Trait в Scala.

Я могу сохранить тип класса в массиве и создать из него экземпляр.

class A
val keys = Array[Class[_]](classOf[A])
keys(0).newInstance
> res130: Any = A@339319d

Однако, когда я пытался использовать метод Iterable Trait, я получаю ошибку типа отсутствующего параметра.

keys.zipWithIndex { case (t, i) => t.newInstance }

error: missing parameter type for expanded function
The argument types of an anonymous function must be fully known. (SLS 8.5)
Expected type was: scala.collection.generic.CanBuildFrom[Array[Class[_]],(?, Int),?]

Что может быть не так?


person prosseek    schedule 16.08.2014    source источник


Ответы (1)


zipWithIndex не принимает аргументов, кроме неявного CanBuildFrom, который в вашем случае заменяется вашим соответствием шаблону. Похоже, что вы ищете map или какой-либо другой метод для перебора элементов. Попробуйте что-то вроде этого:

  keys.zipWithIndex.map { case (t, i) => t.newInstance }
person Noah    schedule 16.08.2014
comment
Или то же самое в этом случае, поскольку индекс просто выбрасывается: keys.map(_.newInstance). - person Kigyo; 16.08.2014