2014-01-28 1 views
0

Как сопоставить последовательность экземпляров класса с последовательностью карт в Scala?Как сопоставить последовательность объектов с Картами в Scala?

Предположим, что экземпляры следующего типа:

class Package(_name: String, _description: String, _homepage: String = null) { 
    var name: String = _name 
    var description: String = _description 
    var homepage: String = _homepage 
} 

И мы имеем последовательность экземпляров этого типа:

var packages = Seq(
    new Package("A", "Package A", "https://github.com/package/a"), 
    new Package("B", "Package B") 
) 

Как сопоставить packages к последовательности карт?

Карты должны быть эквивалентны следующим:

Seq(
    ("name" -> "A", "description" -> "Package A", "homepage" -> "https://github.com/package/a"), 
    ("name" -> "B", "description" -> "Package B", "homepage" -> null) 
) 
+1

Что карты выглядят? – Lee

+0

@Lee Посмотрите мои изменения – aknuds1

ответ

3

На основании вашего редактирования вы можете сделать:

packages.map(p => Map(("name", p.name), ("description", p.description), ("homepage", p.homepage))) 
+0

Кажется, хорошо работает, спасибо! – aknuds1

1

Чтобы создать карту packages с name в качестве ключа и Package как значение этого будет делать.

scala> packages.map(p => p.name -> p).toMap 
res7: scala.collection.immutable.Map[String,Package] = Map(A -> [email protected], B -> [email protected]) 
Смежные вопросы