web-dev-qa-db-fra.com

Une façon simple et agréable d’augmenter l’Int nullable en Kotlin

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.

5
Aleš Zrak

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
9
crgarridos

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.

1
Marko Topolnik

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()
0
Joshua
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.

0
aga

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
0
gil.fernandes