web-dev-qa-db-ja.com

Kotlinでnull可能なIntをインクリメントするためのシンプルで素晴らしい方法

Kotlinでnull可能なIntをインクリメントする最も簡単で読みやすい方法は何ですか?これを行う以外に方法はありますか?

var myInt: Int? = 3
myInt = if(myInt!=null) myInt+1 else null

これは、myIntが単純な変数の場合は問題ありませんが、myIntがより長い式の場合は非常に長くなる可能性があります。

9
Aleš Zrak

次のように、呼び出し可能な方法でオペレーターを呼び出すことができます。

_myInt = myInt?.inc()
_

inc()演算子しないはレシーバーの値を変更しますが、新しい値を作成することに注意してください。これは、次のステートメントがmyIntを変更しないことを意味します。

_val myInt: Int? = null
myInt?.inc() // myInt still being null
_

どちらでもない:

_val myInt: Int? = 5
myInt?.inc() // myInt still being 5
_
15
crgarridos

他の答えはより短い代替案を提示します、私は基本的なif-constructを適切に使用する方法を提示します:

var myInt: Int? = 3
if (myInt != null) myInt++

これはJavaとよく似ており、新しい複雑なレイヤーを追加する必要はありません。

1
Marko Topolnik

incを使用します。 Kotlinでは、すべての演算子がメソッド呼び出しに変換されます。詳細は こちら を参照してください。

var myInt: Int? = 3
myInt = myInt?.inc()
0
Joshua
_var myInt: Int? = 3
myInt = myInt?.inc()
_

documentation には次のように記載されているため、inc()から返された値をmyIntに割り当てていることに注意してください。

Inc()およびdec()関数は、++または-演算が使用された変数に割り当てられる値を返す必要があります。 incまたはdecが呼び出されたオブジェクトを変更するべきではありません。

0
aga

最善の解決策は crgarridos ' oneです。

他の値でインクリメントする場合の代替策は次のとおりです。

var myInt: Int? = 1
val n = myInt?.plus(1)
println(n)

これは印刷します:

2
0
gil.fernandes