セーフコール演算子
CoddyのKotlinジャーニー「基礎」セクションの一部。レッスン 14/93。
null を許容する変数がある場合、その変数のメソッドを直接呼び出したり、プロパティにアクセスしたりすることはできません。値が null である可能性があるため、コンパイラーが許可しないからです。セーフコール演算子 ?. を使うと、この問題を簡潔に解決できます。
通常のドット . の代わりに ?. を使うと、nullable 型のメンバーに安全にアクセスできます。
fun main() {
val name: String? = "Alice"
val length = name?.length // 5を返す
println(length)
val nullName: String? = null
val nullLength = nullName?.length // nullを返す(クラッシュしない!)
println(nullLength)
}安全呼び出し演算子は、プロパティやメソッドにアクセスする前に値が null かどうかを確認します。値が null の場合、クラッシュする代わりに式全体が null を返します。値が存在する場合は、通常の呼び出しと同じように動作します。
複数の安全呼び出しを連鎖させることもできます。
fun main() {
val text: String? = "Hello"
val result = text?.uppercase()?.length
println(result) // 出力: 5
}チェーンの一部が null の場合、エラーをスローすることなく、式全体が安全に null を返します。
チャレンジ
簡単次の nullable 変数が与えられています。
val message: String? = "Kotlin"セーフコール演算子を使って、次のことを行ってください。
messageの長さを取得して出力するmessageを大文字に変換し、結果を出力する
次に、もう1つ nullable 変数を作成してください。
val empty: String? = nullセーフコール演算子を使って、emptyの長さを取得して出力してください。
各結果は別々の行に出力してください。セーフコール演算子は、値が
nullの場合にnullを返すことを忘れないでください。
自分で試してみよう
fun main() {
val message: String? = "Kotlin"
// TODO: セーフコール演算子を使ってmessageの長さを取得し、表示する
// TODO: セーフコール演算子を使ってmessageを大文字に変換し、表示する
val empty: String? = null
// TODO: セーフコール演算子を使ってemptyの長さを取得し、表示する
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド