Kotlinでnull可能なIntをインクリメントする最も簡単で読みやすい方法は何ですか?これを行う以外に方法はありますか?
var myInt: Int? = 3
myInt = if(myInt!=null) myInt+1 else null
これは、myIntが単純な変数の場合は問題ありませんが、myIntがより長い式の場合は非常に長くなる可能性があります。
次のように、呼び出し可能な方法でオペレーターを呼び出すことができます。
_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
_
他の答えはより短い代替案を提示します、私は基本的なif-constructを適切に使用する方法を提示します:
var myInt: Int? = 3
if (myInt != null) myInt++
これはJavaとよく似ており、新しい複雑なレイヤーを追加する必要はありません。
inc
を使用します。 Kotlinでは、すべての演算子がメソッド呼び出しに変換されます。詳細は こちら を参照してください。
var myInt: Int? = 3
myInt = myInt?.inc()
_var myInt: Int? = 3
myInt = myInt?.inc()
_
documentation には次のように記載されているため、inc()
から返された値をmyInt
に割り当てていることに注意してください。
Inc()およびdec()関数は、++または-演算が使用された変数に割り当てられる値を返す必要があります。 incまたはdecが呼び出されたオブジェクトを変更するべきではありません。
最善の解決策は crgarridos ' oneです。
他の値でインクリメントする場合の代替策は次のとおりです。
var myInt: Int? = 1
val n = myInt?.plus(1)
println(n)
これは印刷します:
2