Menu
Coddy logo textTech

非nullアサーション

CoddyのKotlinジャーニー「基礎」セクションの一部。レッスン 17/93。

セーフコール演算子とエルビス演算子は null を適切に処理しますが、コード内の特定の時点で nullable 値が null ではないと確信している場合もあります。null 非許容アサーション演算子 !! を使うと、Kotlin に「これは null ではないと保証します」と伝えられます。

fun main() {
    val name: String? = "Alice"
    val length = name!!.length  // String? を String に変換します
    println(length)  // 出力: 5
}

!!演算子は、null 許容型を null 非許容型に変換します。ただし、値が実際に null の場合、プログラムはNullPointerExceptionでクラッシュします。

fun main() {
    val name: String? = null
    val length = name!!.length  // ここでクラッシュします!
}

使用するタイミング:値が null にならないことを保証するロジックがあるものの、コンパイラーがそれを検証できない場合にのみ !! を使用してください。ほとんどの場合は、代わりに安全呼び出し ?. またはエルビス演算子 ?: を使用することを推奨します。非 null アサーションは最初の選択肢ではなく、最後の手段にしてください。

challenge icon

チャレンジ

簡単

textパラメーターを受け取り、大文字に変換したバージョンの長さを返す関数 getUppercaseLength を作成してください。

この関数は null ではない文字列値を受け取りますが、パラメーターの型は nullable です(String?)。not-null アサーション演算子 !! を使用して nullable 型を non-nullable 型に変換し、uppercase() メソッドをチェーンしてから length を取得してください。

パラメーター:

  • text (String?): 値を含むことが保証された nullable な文字列

戻り値: text を大文字に変換したバージョンの長さ(Int)

注: このチャレンジでは、入力は常に有効な文字列であり、決して null にはなりません。これは、値が存在することは分かっているものの、コンパイラーではそれを検証できない状況をシミュレートしています。

自分で試してみよう

fun getUppercaseLength(text: String?): Int {
    // ここにコードを書いてください
}
quiz icon腕試し

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

基礎のすべてのレッスン

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