2016-04-15 6 views
2

У меня есть массив длиной 3, скажем Array(3,4,5), и у меня есть целевая длина, которая равна Int 7. Скажите, пожалуйста, 7. Как я могу поместить Array с его первый элемент до тех пор, пока длина Array не достигнет Int?Scala как повторить первый элемент массива до тех пор, пока Array.size не достигнет определенного числа

val A = Array(3,4,5) 
val T = 7 
//Desired output Array(3,3,3,3,3,4,5) 

Мой текущий метод:

val difflength = T - A.size 
val firstElement = A.head 
val PadArray = (for(i <- 0 to difflength) yield firstElement).toArray 
PadArray ++ A 

Есть ли более простой способ сделать это?

ответ

3

Array's fill method поставляется в удобной для этого:

val a = Array(3,4,5) 
val b = { 
    val t = 7 
    val diffLength = t - a.size 
    val firstElement = a.head 
    Array.fill(diffLength)(firstElement) ++ a 
} 

Результат:

scala> b 
res0: Array[Int] = Array(3, 3, 3, 3, 3, 4, 5) 
+1

ах, заполнить лучше, чем цикл, который я в настоящее время используется, хороший. – GameOfThrows

Смежные вопросы