パイプラインのチェーンとSequenceによる中間リストの回避
複数ステップのパイプラインを構築し、Sequenceで遅延評価を行います。
「パイプラインのチェーンとSequenceによる中間リストの回避」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。
問題: 中間リスト
先行評価と遅延評価
Sequence への変換
val result = (1..1_000_000)
.asSequence()
.filter { it % 2 == 0 }
.map { it * it }
.take(5)
.toList()
println(result) // [4, 16, 36, 64, 100]Sequence は遅延評価: 終端操作まで処理しない
val seq = generateSequence(1) { it + 1 } // infinite!
.filter { it % 3 == 0 }
.map { it * it }
val first5 = seq.take(5).toList()
println(first5) // [9, 36, 81, 144, 225]generateSequence: 無限シーケンス
val fibonacci = generateSequence(Pair(0, 1)) { (a, b) -> Pair(b, a + b) }
.map { it.first }
val first10 = fibonacci.take(10).toList()
println(first10) // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]sequence ビルダー
val evens = sequence {
var n = 0
while (true) {
yield(n)
n += 2
}
}
println(evens.take(5).toList()) // [0, 2, 4, 6, 8]Sequence を使う場面
Sequence を使わない場面
// Overkill for small list:
listOf(1, 2, 3).asSequence().map { it * 2 }.toList()
// Just use:
listOf(1, 2, 3).map { it * 2 }Sequence の終端操作
val s = (1..100).asSequence().filter { it % 7 == 0 }
println(s.first()) // 7
println(s.count()) // 14
println(s.sum()) // 728状態を持つ操作と持たない操作
val s = (1..10).asSequence()
.filter { it > 3 } // stateless: lazy
.sorted() // stateful: must see all elements
.take(3).toList()
println(s) // [4, 5, 6]constrainOnce: 1 回の反復を保証
val seq = generateSequence(1) { if (it < 5) it + 1 else null }
.constrainOnce()
val first = seq.toList() // OK
// val second = seq.toList() // IllegalStateException!クイックチェック
まとめ
よくある質問
「パイプラインのチェーンとSequenceによる中間リストの回避」レッスンは無料ですか?
はい。「パイプラインのチェーンとSequenceによる中間リストの回避」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。
「パイプラインのチェーンとSequenceによる中間リストの回避」で何を学びますか?
複数ステップのパイプラインを構築し、Sequenceで遅延評価を行います。 ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kotlin Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「パイプラインのチェーンとSequenceによる中間リストの回避」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKotlin Academyレッスンでコードを書いて実行できますか?
はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- mapとflatMap:すべての要素を変換する
- filter、filterNot、partition
- fold、reduce、runningFold
- パイプラインのチェーンとSequenceによる中間リストの回避