Scala повторить массив - PullRequest
       4

Scala повторить массив

6 голосов
/ 20 июня 2011

Я новичок в scala. Я пытаюсь написать функцию, которая «повторяет» Array (Scala 2.9.0):

def repeat[V](original: Array[V],times:Int):Array[V]= {
if (times==0)
   Array[V]()
else
  Array.concat(original,repeat(original,times-1)
}

Но я не могу скомпилировать это (получить сообщение об ошибке manifest) ...

Ответы [ 2 ]

6 голосов
/ 20 июня 2011

Вам нужно попросить компилятор предоставить манифест класса для V:

def repeat[V : Manifest](original: Array[V], times: Int): Array[V] = ...

Ответ на вопрос: зачем это нужно, вы можете найти здесь:

Зачем нужен ClassManifest с массивом, а не с списком?

Я не уверен, где вы хотите его использовать, но я обычно рекомендую вам использовать List или другую подходящую коллекцию вместо Array.

5 голосов
/ 20 июня 2011

Кстати, альтернативный способ повторить массив - это "заполнить" Seq ссылками на массив, а затем сгладить это:

def repeat[V: Manifest](original: Array[V], times: Int) : Array[V] = 
  Seq.fill(times)(original).flatten.toArray;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...