Condition dans la fonction de la carte
Quelque chose dans la Scala comme,
condition ? first_expression : second_expression;
que je peux utiliser à l'intérieur de la carte en fonction de la scala?
Je veux être capable d'écrire quelque chose comme ceci:
val statuses = tweets.map(status => status.isTruncate? //do nothing | status.getText())
Si la fonction inline n'est pas possible, comment puis-je écrire une condition dans map
?
source d'informationauteur Lisa
Vous devez vous connecter pour publier un commentaire.
La
?
opérateur, parfois appelé le opérateur ternaire n'est pas nécessaire en Scala, car il est subsumé par unif-else
expression:L'utiliser dans un
map
vous pouvez utiliserflatMap
et ensuite de retour à unOption
sur chaque côté de laif-else
. DepuisOption
est implicitement convertibleIterable
l'effet est que la liste est aplati, et laNones
sont filtrées:C'est équivalent à l'utilisation de
map
et puisflatten
:Plus idiomatique, vous pouvez utiliser
collect
qui vous permet defilter
etmap
en une seule étape à l'aide d'une fonction partielle:Vous pouvez également le faire en 2 étapes à l'aide de
filter
etmap
:L'inconvénient ici est que cela va itérer sur la liste deux fois, ce qui peut être indésirable. Si vous utilisez
view
vous pouvez utiliser cette même logique et seulement itérer sur la liste une fois:vous pourrez filtrer et puis la carte comme,