0Pricing
Kotlin Academy · レッスン

Charとカスタム範囲

整数以外の範囲を学びます

「Charとカスタム範囲」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。

整数を超えて

範囲はIntだけのものではありません。Kotlinでは、文字やその他の比較可能な型の範囲もサポートされています。

このレッスンでは、文字の範囲と、カスタム型をrangeToで範囲に対応させる方法を学びます。

文字の範囲の振り返り

文字には定義された順序があるため、'a'..'z'は有効な範囲です。

反復処理や所属の確認などができます。

fun main() {
    for (c in 'a'..'f') print(c)
    println()
    println('q' in 'a'..'z')
}

文字を検証する

文字の範囲を使うと、数字や英字かどうかの確認など、入力検証を読みやすく書けます。

fun isDigit(c: Char): Boolean = c in '0'..'9'

fun main() {
    println(isDigit('7'))
    println(isDigit('x'))
}

文字を数える

文字の範囲を反復処理して値を収集すれば、簡単なアルファベットを作成できます。

fun main() {
    val alphabet = ('a'..'z').toList()
    println(alphabet.size)
    println(alphabet.first())
    println(alphabet.last())
}

Longの範囲

範囲はLongにも使用でき、大きな数値の範囲を扱う場合に便利です。

同じ演算子を使用できます。

fun main() {
    val big = 1L..5L
    println(big.sum())
}

Comparableの範囲

任意のComparable型は..で範囲を作成できます。ただし、そのような範囲でできるのは所属の確認だけで、反復処理はできません。

たとえば、Stringの範囲では辞書順を確認できます。

fun main() {
    val range = "apple".."mango"
    println("cherry" in range)
    println("zebra" in range)
}

反復処理できない範囲がある理由

反復処理には定義されたステップが必要です。整数と文字には「1を加える」というステップがありますが、文字列とDoubleには明確な次の値がありません。

そのため、これらの範囲ではinは使えますが、forループは使えません。

fun main() {
    val r = 1.0..5.0
    println(2.5 in r)
    // for (x in r) // not allowed for Double
}

rangeToを使ったカスタム型

..演算子はrangeTo関数を呼び出します。クラスがComparableを実装していれば、範囲への所属をそのまま利用できます。

ここでは、数値で比較する単純なバージョン型を使用します。

data class Ver(val n: Int) : Comparable<Ver> {
    override fun compareTo(other: Ver) = n - other.n
}

fun main() {
    val range = Ver(1)..Ver(5)
    println(Ver(3) in range)
    println(Ver(9) in range)
}

演算子の内部動作

a..bと記述することは、a.rangeTo(b)を呼び出すことと同じです。

演算子形式は、同じ関数をより読みやすい構文で記述したものにすぎません。

fun main() {
    val r1 = 1..5
    val r2 = 1.rangeTo(5)
    println(r1.toList() == r2.toList())
}

適切な範囲を選ぶ

簡単な指針は次のとおりです。

  • 数値と文字 → 反復処理と所属の確認ができます
  • DoubleとカスタムのComparable型 → 所属の確認だけができます
  • ステップが必要な場合は、整数または文字のプログレッションを使います
fun main() {
    println('m' in 'a'..'z')
    println(3.5 in 1.0..4.0)
    println(50 in 1..100)
}

まとめ

範囲はさまざまな型に一般化できます。

  • 文字の範囲は反復処理と検証に使えます
  • Longの範囲は大きな範囲を扱えます
  • Comparable型とカスタム型は所属の確認をサポートします
  • ..はrangeToの糖衣構文です
fun main() {
    val vowels = "aeiou"
    for (c in 'a'..'z') {
        if (c in vowels) print(c)
    }
    println()
}

理解度チェック

文字とカスタム範囲についての理解度を確認しましょう。

振り返り

文字とカスタム範囲について学びました。

  • 文字とLongの範囲はIntと同じように反復処理できます
  • Comparable型は..による所属の確認をサポートします
  • 離散的でない型ではinによる確認はできますが、ループはできません
  • ..はrangeToの短縮形です

これでRanges and Progressionsコースは完了です。

よくある質問

「Charとカスタム範囲」レッスンは無料ですか?

はい。「Charとカスタム範囲」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。

「Charとカスタム範囲」で何を学びますか?

整数以外の範囲を学びます ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Kotlin Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Charとカスタム範囲」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このKotlin Academyレッスンでコードを書いて実行できますか?

はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 範囲演算子
  2. stepとdownTo
  3. ループでの範囲
  4. Charとカスタム範囲
← Kotlin Academyに戻る