2017-02-16 10 views
2

У меня есть два массива, которые мне нравится комбинировать и создавать Array[Item]. Item - класс дела. Вот пример:Что является самым простым способом создания объектов класса case из массива Tuple2?

case class Item(a: String, b: Int) 

val itemStrings = Array("a_string", "another_string", "yet_another_string") 

val itemInts = Array(1, 2, 3) 

val zipped = itemStrings zip itemInts 

В настоящее время я использую следующее решение, чтобы решить, но Интересно, есть ли другие возможности к этому ...

val itemArray = zipped map { case (a, b) => Item(a, b) } 

дает то, что я хочу:

itemArray: Array[Item] = Array(Item(a_string, 1), Item(another_string, 2), Item(yet_another_string, 3)) 

Я также попытался это, но он не работает для последовательности элементов:

(Item.apply _).tupled(zipped:_*) 

Item.tupled(zipped:_*) 

ответ

3

Вы можете map по массиву с Item.tupled:

zipped.map(Item.tupled) 

scala> zipped.map(Item.tupled) 
res3: Array[Item] = Array(Item(a_string,1), Item(another_string,2), Item(yet_another_string,3)) 

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

  • Нет связанных вопросов^_^