Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Sequenceを理解する Server-Side Kotlin Meetup vol.8 2023.4.7 taro(@taroro_tarotaro)
Slide 2
Slide 2 text
自己紹介 ● Ohnishi Taro( @taroro_tarotaro) ● 3末まで建設SaaS開発→無職 ● 前職で1年弱ほどServer Side Kotlinを書いていました
Slide 3
Slide 3 text
はじめに
Slide 4
Slide 4 text
はじめに Sequenceに対する僕のイメージ ● Collection操作のパフォーマンス改善で使う… ● 遅延評価… ● ちょっとむずかしそうだけど、いまいち原理がわからない…
Slide 5
Slide 5 text
はじめに Sequenceに対する僕のイメージ ● Collection操作のパフォーマンス改善で使う… ● 遅延評価… ● ちょっとむずかしそうだけど、いまいち原理がわからない… →理解してみよう!
Slide 6
Slide 6 text
Sequenceのおさらい
Slide 7
Slide 7 text
Sequenceのおさらい filterしてmapしてtakeする
Slide 8
Slide 8 text
Sequenceのおさらい filterしてmapしてtakeする
Slide 9
Slide 9 text
Sequenceのおさらい 2件のみなのに全件に対してfilterしてmapしている…
Slide 10
Slide 10 text
Sequenceのおさらい Sequenceを使うと要素ごとに操作できる!
Slide 11
Slide 11 text
Collectionは 何をしているのか
Slide 12
Slide 12 text
Collectionは何をしているのか CollectionのOperation Chainでやっていること →関数でラップしている(関数の返り値を次の関数の引数に渡している)
Slide 13
Slide 13 text
Collectionは何をしているのか CollectionのOperation Chainでやっていること →関数でラップしている(関数の返り値を次の関数の引数に渡している) ※コードはイメージです(動きません)
Slide 14
Slide 14 text
Sequenceは 何をしているのか
Slide 15
Slide 15 text
Sequenceは何をしているのか SequenceのOperation Chainでやりたいこと →各要素ごとに実行する操作関数を追加する
Slide 16
Slide 16 text
Sequenceは何をしているのか SequenceのOperation Chainでやりたいこと →各要素ごとに実行する操作関数を追加する →クラスの委譲
Slide 17
Slide 17 text
Sequenceは何をしているのか SequenceのOperation Chainでやりたいこと →クラスでラップする ※コードはイメージです(動きません)
Slide 18
Slide 18 text
Sequenceは何をしているのか 内部実装を見てみる(map) https://github.com/JetBrains/kotlin/blob/1.8.20/libraries/stdlib/src/kotlin/collections/Sequences.kt#L205
Slide 19
Slide 19 text
Sequenceは何をしているのか CollectionのOperation Chain →関数でラップ SequenceのOperation Chain →クラスでラップ
Slide 20
Slide 20 text
Sequenceは何をしているのか CollectionのOperation Chain →関数でラップ クラスでラップしているだけなので、iterator()が実行されるまで評価されない →遅延評価も自然に理解できる SequenceのOperation Chain →クラスでラップ
Slide 21
Slide 21 text
Kotlin関係ある?
Slide 22
Slide 22 text
Kotlin関係ある? Kotlinは既存クラスに対して簡単に拡張関数を作れる!
Slide 23
Slide 23 text
まとめ
Slide 24
Slide 24 text
まとめ ● Sequenceを使うと要素ごとに操作ができ評価を遅らせられる ● Collection関数は関数でラップしているのに対して、Sequence関数はクラスでラッ プしている ● Kotlinって表現力が強いこそ中身知ってみるのは大切かも
Slide 25
Slide 25 text
ありがとうございました!