Функция Scala, которая принимает аргумент массива и возвращает измененный массив - PullRequest
0 голосов
/ 06 марта 2019

Я хотел бы найти наиболее прагматичный способ принятия массива (или списка) и добавления к структуре данных. Затем, наконец, верните новую структуру данных.

Примерно так:

 def template(array: Array[String]): Array[Nothing] = {
  val staging_path = "s3//clone-staging/"
  var path_list = Array()
  //iterate through each of the items in the array and append to the new string.
  for(outputString <- array){
    var new_path = staging_path.toString + outputString
    println(new_path)
    //path_list I thought would add these new staging_path to the array
    path_list +: new_path

  }
 path_list(4)
 }

Однако, вызывая отдельный индекс структуры данных в качестве шанти-способа проверки существования, path_list (4) возвращает Out of Bounds.

Спасибо.

1 Ответ

1 голос
/ 06 марта 2019

Я думаю, вы просто хотите использовать map здесь:

val staging_path = "s3//clone-staging/"
val dirs = Array("one", "two", "three", "four", "five")
val paths = dirs.map(dir => staging_path + dir)
println(paths)
// result: paths: Array[String] = Array(s3//clone-staging/one, s3//clone-staging/two, s3//clone-staging/three, s3//clone-staging/four, s3//clone-staging/five)
println(paths.length)
// result: 5

В мире функционального программирования вы, как правило, пытаетесь избежать мутаций.Вместо этого думайте об этом как о преобразовании входного массива в новый массив.

...