powerapps español crear con aplicaciones scala option code-readability

scala - español - crear aplicaciones con powerapps



¿Una mejor manera de probar el valor de una opción? (6)

Creo que también se podría utilizar la coincidencia de patrones. De esa manera usted extrae el valor interesante directamente:

val opt = Some("oxbow") opt match { case Some(value) => println(value) //Doing something }

A menudo me encuentro con una Option[T] para algún tipo T y deseo probar el valor de la opción contra algún valor. Por ejemplo:

val opt = Some("oxbow") if (opt.isDefined && opt.get == "lakes") //do something

El siguiente código es equivalente y elimina el requisito de probar la existencia del valor de la opción

if (opt.map(_ == "lakes").getOrElse(false)) //do something

Sin embargo esto me parece menos legible. Otras posibilidades son:

if (opt.filter(_ == "lakes").isDefined) if (opt.find(_ == "lakes").isDefined) //uses implicit conversion to Iterable

Pero tampoco creo que esto exprese claramente la intención, que sería mejor como:

if (opt.isDefinedAnd(_ == "lakes"))

¿Alguien tiene una mejor manera de hacer esta prueba?


Para Scala 2.11, puedes usar Some(foo).contains(bar)


Qué tal si

if (opt == Some("lakes"))

Esto expresa la intención claramente y es sencillo.


También puede utilizar para la comprensión:

for {val v <- opt if v == "lakes"} // do smth with v


Walter Chang FTW, pero aquí hay otra alternativa incómoda:

Some(2) exists (_ == 2)


val opt = Some("oxbow") opt match { case Some("lakes") => //Doing something case _ => //If it doesn''t match }