Scala Carte#get et le retour de Certains()
Im en utilisant scala Map#get
la fonction, et pour tous les précis de la requête elle renvoie comme Some[String]
EST-il un moyen facile de supprimer les Some
?
Exemple:
def searchDefs{
print("What Word would you like defined? ")
val selection = readLine
println(selection + ":\n\t" + definitionMap.get(selection))
}
Lorsque j'utilise cette méthode et entrez la ligne suivante:
What Word would you like defined? Ontology
La Valeur renvoyée est:
Ontology:
Some(A set of representational primitives with which to model a domain of knowledge or discourse.)
Je voudrais enlever les Quelques() autour de cela.
Des conseils?
- Voir aussi: stackoverflow.com/questions/9364250/...
- La chose merveilleuse au sujet de
Option
est qu'il vous oblige à gérer leNone
cas.
Vous devez vous connecter pour publier un commentaire.
Il y a beaucoup de façons de traiter le
Option
type. Tout d'abord, cependant, ne se rendent compte combien mieux c'est d'avoir cela à la place d'un potentielnull
de référence! Ne pas essayer de se débarrasser de lui, tout simplement parce que vous êtes habitué à la façon dont Java fonctionne.Que quelqu'un d'autre l'a récemment déclaré: stick avec elle pendant quelques semaines et vous allez gémir à chaque fois que vous devez revenir à une langue qui n'offre pas
Option
types.Maintenant, comme pour votre question, le plus simple et le plus risqué façon de le faire:
Appel
.get
sur unSome
objet récupère l'objet à l'intérieur. Il ne, cependant, vous donner une exception d'exécution si vous avez eu uneNone
à la place (par exemple, si la clé n'était pas dans votre carte).Un beaucoup plus propre est d'utiliser
Option.foreach
ouOption.map
comme ceci:Comme vous pouvez le voir, cela vous permet d'exécuter une instruction si et seulement si vous avez une valeur réelle. Si le
Option
estNone
au lieu de cela, il ne se passera rien.Enfin, il est également populaire pour l'utilisation d'un patron sur
Option
types comme ceci:mymap(something)
semble plus joli.mymap(something)
semble être une bonne alternative lorsque l'on sait quesomething
est certainement contenue dans la carte.Personnellement, j'aime utiliser
.getOrElse(String)
et d'utiliser quelque chose comme "Aucun" comme un défaut, c'est à dire.getOrElse("None")
.