Je me demande si la bibliothèque standard est complètement null code> -free et - sinon - serait intéressé quels cas d'utilisation raisonnables existe où retourner
null code> est préférable à renvoyer certains
option code> instance. p>
3 Réponses :
Je ne peux pas penser à une recherche de Google dans l'API (INURL: SCALA-LANG.ORG/API RETOUR + NULL) et il ne semblait pas donner une utilisation documentée de NULL. p>
Peut-être qu'il existe une utilisation interne de som. Les seules raisons auxquelles je peux penser pour faire ce serait pour éviter le supplément d'un objet ou une intégration facile avec Java. Les deux semblent improbables. P>
Étant donné que Scala n'utilise pas retour code> la plupart du temps, cette recherche ne prendrait pas vraiment beaucoup.
Le seul endroit que j'ai vu null code> utilisé dans la bibliothèque standard sont des groupes REGEX facultatifs.
scala> val number = """(\d+)(\.\d+)?""".r // matches digits optionally followed by a . and more digits
number: scala.util.matching.Regex = (\d+)(\.\d+)?
scala> "12" match {
| case number(intPart, decimalPart) => (intPart, decimalPart)
| }
res0: (String, String) = (12,null)
J'aime beaucoup le fait que Regex devienne automatiquement le matcheur de motif et que, pour 90% des cas que vous souhaiteriez une chaîne directe code>; Mais puisque Scala est presque entièrement exempte d'exceptions étranges, cela a peut-être été une bonne idée s'ils utilisaient l'option
Option [String] Code> pour la cohérence.
Option [String] CODE> et / ou
Liste CODE> se présente fréquemment lors de l'analyse JSON et je ne pense pas que je les éprouve beaucoup depuis que je les utiliserais dans la compréhension.
Conseil @eugene: Si vous spécifiez le type, il ne correspond pas à null code>. Par exemple,
Numéro de cas (intpart: chaîne, décimalpart: chaîne) code> ne correspond pas à la chaîne ci-dessus.
nomsPaceSpaceBinding retourne null Code> Pour l'espace de noms local ou dans le cas suivant une entrée non définie.
$ scala
Welcome to Scala version 2.9.0.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_24).
Type in expressions to have them evaluated.
Type :help for more information.
scala> (<foo/>).scope.getURI("something")
res0: String = null
Liée à scala.xml.elem code> qui prend une valeur code> string code> la valeur de préfixe qui devrait être
null code> pour aucun préfixe d'espace de noms. Encore une fois, pourquoi ce n'est pas
option [string] code> est au-delà de moi.
Le seul cas d'utilisation raisonnable pour le retour
null code> est lorsque vous utilisez une bibliothèque qui attend
null code> pour être renvoyé à partir d'un rappel comme indication du "sans résultat". C'est souvent un mal nécessaire lorsqu'il s'agit de bibliothèques héritées Java du code Scala.
En général, les méthodes de la bibliothèque Scala renverront l'option ou lanceront une exception si elles sont appelées inappropriées (par exemple, la tête et la dernière liste). Je n'en sais pas de ce retour NULL.