目次
前回の記事はこちら。自分用のメモなので、読みにくいかもです。
- Rust the Bookを読み始めた
- Rust the book - 第4章
- Rust the book - 第5章
- Rust the book - 第6章
- Rust the book - 第8章
- Rust the book - 第9章
- Rust the book - 第10章
11章、12章はちょっと飛ばして、13章です。
第13章
イテレータ、クロージャです。 12章の話もちょっと出てくるのか。
クロージャ
基本的に、「変数には値が束縛されている」という固定観念がずっと頭にこびりついたままなので、クロージャに慣れないんだろうなぁ。そろそろこの固定概念をどうにかしないと。
- 匿名関数で、変数に保存したり引数に渡せる
- ちょっと面白い話(ワークアウト)で実際に考えられる手法の説明がいくつか行われる
- 関数でリファクタリング
- これが自分がよくやるパターンかなぁ。クロージャになれてないので。。。
- クロージャーを変数に束縛
- 呼び出しは関数みたいな感じ(ここで少し混乱)
- これだと、結局呼び出されたタイミングが複数回あるよね? -> あはりそうだった
ここで、閑話休題で、クロージャの型推論とか注釈の話。 クロージャは狭い文脈だし、外に公開しているものでもないので、戻り値なども定義してなくてもいいよねとのこと。書くことも可能?なので、書いてわかりやすくするのもありなんだろうな。
推論についてはこれまで通りで、2回異なる型の変数で呼び出すと、2回目で怒られていた。
- 遅延評価(クロージャを保持する構造体!?)
Fn
トレイト- トレイトとMatchの組み合わせだからこのへんで説明する形になるのか。
- これを真似すれば、いくつか処理を簡素化できるかもしれないなぁ、たしかに。
- なければ実行するみたいな処理を書きたいことがよくあるし。Javaだとnullで定義しといて、nullだったらみたいなのがあるから。
-
Cacher
はサンプルだからこの名前でいいけど、自分だと、どんな名前にするかなぁ? -
振る舞いは難しくなるのか。
Cacher実装の限界
を読むと。 -
関数にするとスコープが変わるのでアクセスできなくなると。。。コンパイラが教えてくれるのは便利だな。
-
環境から値をキャプチャする3つの方法
- 多分この話が一番クロージャに意味がある話なんだと思う。
イテレータ
回しましょう。
- 便利。ただ、こういう書き方に自分が慣れてないので、そっちを補正しないとなぁ。
- どれがイテレータ?っていうのを判別するのがちょっとむずかしい(慣れの問題かなぁ)
- イテレータアダプタ便利。どんなのがあるのか?とかがやっとわかってきた。
- パフォーマンスに関しては、うーん、どうなんだろう?という感想だった。
comments powered by Disqus
See Also by Hugo
- Rust the book - 第15章
- Rust the book - 第9章
- Rust the book - 第10章
- Rust the Bookを読み始めた
- Rust the book - 第8章