セーフコール演算子
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を大文字に変換して、結果を出力する
次に、別の 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プレイグラウンド