Scala: match et d'analyser un nombre entier chaîne de caractères?
Je suis à la recherche d'un moyen de correspondance entre une chaîne de caractères qui peut contenir une valeur entière. Si oui, l'analyser. Je voudrais écrire un code semblable au suivant:
def getValue(s: String): Int = s match {
case "inf" => Integer.MAX_VALUE
case Int(x) => x
case _ => throw ...
}
Le but est que, si la chaîne est égale à "inf", retour Entier.MAX_VALUE. Si la chaîne est un analysée entier, de retour de la valeur de l'entier. Autrement jeter.
Vous devez vous connecter pour publier un commentaire.
Définir un extracteur
Votre exemple de la méthode
Et de l'utiliser
Je sais que c'est un vieux, ont répondu à la question, mais c'est mieux à mon humble avis:
Bien sûr, il ne jette pas des exceptions, mais si vous le voulez vraiment, vous pouvez utiliser
case
la capture de ces trop grand nombre, ou peut-être que nous pourrions utiliserscala.math.BigInt
à la place.Vous pouvez utiliser un garde:
Comment sur:
une version améliorée de James Iri de l'extracteur:
Depuis
Scala 2.13
introduitString::toIntOption
:nous pouvons exprimer la
String
comme unOption[Int]
après vérification, si elle est égale à "inf":