2012-07-29 9 views
35

cuando estoy tratando de afectar a un valor de tipo String en un campo de tipo Opción [String] me sale el siguiente error:Cómo establecer una cadena en una opción [String]?

type mismatch; found : String required: Option[String] 

¿Cómo puede afectar el valor que myValue:String en el campo myField:Option[String]?

Respuesta

52

Usted también puede utilizar Option(myValue) que convertirá nula a None y no nulo a Some.

+2

Tiene que entender si el valor es igual a "" (cadena vacía), la opción en este caso será Some() – RomKazanova

+1

Correcto, una cadena vacía no es lo mismo que null. –

12

Usted puede envolver cualquier objeto en un Option así:

val opt = Some("foo") 
+7

en cuenta que debe utilizar 'Opción (...)' en general para evitar una 'Algunos (nulo)', como uno generalmente pasará una variable en lugar de una cadena constante. – Frank

4

Usted sólo puede envolver su objeto en una clase si usted no tiene nada, pase

val myField = Some(myValue) 

O

None 

Se llama Patrón de opción

http://www.codecommit.com/blog/scala/the-option-pattern

+3

'La opción (...)' ya lo hace todo por ti. Sustituye los valores 'null' por' None' y ajusta los demás en 'Some (...)'. No es necesario hacer ninguna distinción en su código allí. – Frank

+0

Mi objetivo era explicar el patrón de opciones como si estuviera usando una API personalizada y no desea pasar nada si el valor está vacío. – FUD

0

Si desea convertir una cadena vacía en Ninguno más solución universal es: Option(str).filter(_.nonEmpty)

Cuestiones relacionadas