Массив графиков в Spark Graphx - PullRequest
0 голосов
/ 05 мая 2018

У меня есть несколько графиков одного типа. Я хочу хранить их в массиве. Но когда я добавляю граф в массив, я получаю сообщение об ошибке, что операция ++ не поддерживается в графах.

Когда я использую этот метод:

var graphsArray = Array.empty[Graph[Object,Object]]
graphsArray :+ Graph(myVertices, myEdges)

Я получаю пустой массив, значения не добавляются.

1 Ответ

0 голосов
/ 05 мая 2018

По умолчанию scala Array равен неизменяемый . Это означает, что метод :+ возвращает новый массив с новым значением, в то время как graphsArray остается таким же, как и при его создании (пусто). Поскольку вы не назначаете результат :+ чему-либо, вы теряете результат.

Если вы хотите использовать изменяемый массив, вы можете использовать ArrayBuffer. Если вы хотите сохранить неизменное поведение scala по умолчанию, вы можете использовать fold, чтобы добавить все свои графики.

val emptyArray = Array.empty[Graph[Object, Object]]
val myGraphs = ...
val graphsArray = myGraphs.fold(emptyArray) { case (arr, elm) => arr :+ elm }
...