Menu
Coddy logo textTech

セーフコール演算子

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 を返します。

challenge icon

チャレンジ

簡単

次の nullable 変数が与えられています。

val message: String? = "Kotlin"

セーフコール演算子を使用して、次の操作を行ってください。

  1. message の長さを取得して出力する
  2. 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 の長さを取得し、それを出力する
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Kotlinプレイグラウンド