Quel est le moyen le plus simple et le plus lisible d’augmenter Int de Null dans Kotlin? Y a-t-il un autre moyen que de faire cela?
var myInt: Int? = 3
myInt = if(myInt!=null) myInt+1 else null
C'est très bien si myInt est une simple variable, mais peut devenir très long lorsque myInt est une expression plus longue.
Vous pouvez appeler l'opérateur de manière invocable de la manière suivante:
myInt = myInt?.inc()
Notez que l'opérateur inc()
ne fait pas modifie la valeur de son récepteur mais crée une nouvelle valeur. Cela implique que l'instruction suivante ne change pas myInt
:
val myInt: Int? = null
myInt?.inc() // myInt still being null
Ni :
val myInt: Int? = 5
myInt?.inc() // myInt still being 5
Les autres réponses présentent des alternatives plus courtes, je vais vous montrer comment utiliser correctement la construction if de base:
var myInt: Int? = 3
if (myInt != null) myInt++
C'est un peu comme en Java, il n'est pas nécessaire d'ajouter une nouvelle couche de complication.
Utilisez inc
. En Kotlin, tous les opérateurs sont convertis en appel de méthode. Voir ici pour plus de détails.
var myInt: Int? = 3
myInt = myInt?.inc()
var myInt: Int? = 3
myInt = myInt?.inc()
Notez que j'ai attribué la valeur renvoyée par inc()
à myInt
, sous la forme documentation indique ce qui suit:
Les fonctions inc () et dec () doivent renvoyer une valeur, qui sera affectée à la variable sur laquelle l’opération ++ ou - a été utilisée. Ils ne doivent pas muter l'objet sur lequel l'invocation inc ou dec a été invoquée.
La meilleure solution est crgarridos ' one.
Voici une alternative si vous voulez incrémenter d'autres valeurs:
var myInt: Int? = 1
val n = myInt?.plus(1)
println(n)
Cela imprime:
2