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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 範囲演算子
- stepとdownTo
- ループでの範囲
- Charとカスタム範囲