scala-notes-2018-12

a collection of notes on Scala [WIP]

View the Project on GitHub seralf/scala-notes-2018-12

esempio: proiezione campi da tuple

Supponendo di avere una collezione di oggetti (ad esempio Stream o List), ciascuno dei quali รจ una mappa Map[String, Object] che usiamo per rappresentare tuple provenienti da un database o da un triplestore, possiamo generare una collezione equivalente ma meno onerosa in memoria selezionando solo i campi che ci servono. Ci sono vari modi di farlo, tra cui le :

// collezione originale con molti campi
val elements:Stream[Map[String, Object]] = ... 

ad esempio trasformando ogni elemento:

val filtered_elements_1 = elements.map { doc =>
    Map(("uri"->doc.get("uri")), ("parent_uri"->doc.get("uri")))
}

oppure con le for comprehension:

val filtered_element_2 = for {

	docs <- elements.toStream
	d_uri <- docs.filter(_._1.equals("uri"))
	d_parent <- docs.filter(_._1.equals("parent_uri"))

} yield Map(d_uri, d_parent)