Map
tiene su propio método getOrElse
, por lo que sólo puede escribir lo siguiente:
val t = map.getOrElse('type, "")
que lleva a cabo el mismo que el definición de t
en su primer ejemplo.
Para hacer frente a su comentario: Si sabe que su mapa nunca contendrá la cadena vacía como un valor, puede utilizar el siguiente para añadir el "prefix"
:
map.get('type).map("prefix" + _).getOrElse("")
O, si estás usando Scala 2.10:
map.get('type).fold("")("prefix" + _)
Si su mapa puede tener ""
valores, esta versión se comportará un poco differentl y que el suyo, ya que agregará el prefijo a esos valores. Si quieres exactamente el mismo comportamiento que la versión en una sola línea, puede escribir lo siguiente:
map.get('type).filter(_.nonEmpty).map("prefix" + _).getOrElse("")
Esto probablemente no es necesario, sin embargo, parece que usted no esperar a tener cadenas vacías en tu mapa
acaba de comenzar el aprendizaje de Scala, así que esto es muy útil. ¿Qué hay de la segunda línea? ¿Hay alguna forma de combinarlos? – pbaris
@pbaris 'val t = map.get ('tipo) .map (k =>" prefix "+ k) .getOrElse (" ")' si te entendí bien –
compilador dice "value nonEmpty no es miembro de Any ".Pero lo que @ om-nom-nom sugirió funciona como esperaba – pbaris