August 2013
Intermediate to advanced
720 pages
16h 23m
English
Like the previous recipe, you want to transform one collection into another by applying an algorithm to every element in the original collection.
Rather than using the
for/yield combination shown in the
previous recipe, call the map method
on your collection, passing it a function, an anonymous function, or
method to transform each element. This is shown in the following
examples, where each String in a
List is converted to begin with a
capital letter:
scala>val helpers = Vector("adam", "kim", "melissa")helpers: scala.collection.immutable.Vector[java.lang.String] = Vector(adam, kim, melissa) // the long form scala>val caps = helpers.map(e => e.capitalize)caps: scala.collection.immutable.Vector[String] = Vector(Adam, Kim, Melissa) // the short form scala>val caps = helpers.map(_.capitalize)caps: scala.collection.immutable.Vector[String] = Vector(Adam, Kim, Melissa)
The next example shows that an array of String can be converted to an array of
Int:
scala>val names = Array("Fred", "Joe", "Jonathan")names: Array[java.lang.String] = Array(Fred, Joe, Jonathan) scala>val lengths = names.map(_.length)lengths: Array[Int] = Array(4, 3, 8)
The map method comes in handy
if you want to convert a collection to a list of XML elements:
scala>val nieces = List("Aleka", "Christina", "Molly")nieces: List[String] = List(Aleka, Christina, Molly) scala>val elems = nieces.map(niece => <li>{niece}</li>)elems: List[scala.xml.Elem] ...
Read now
Unlock full access