目次
前回の記事はこちら。自分用のメモなので、読みにくいかもです。
第6章
Enumです。match
式に大活躍
Enumを定義する
- 列挙型は取りうる値をすべて列挙できる。これが名前の由来
- 列挙型と列挙子
- 2連コロン(
::
)で列挙子を指定可能
- 2連コロン(
- 列挙子にデータ(構造体も)が格納可能。
- 疑問:
Write(String)
とかはタプルの表現になるのかな?- と思ったが、タプルでは1つだけの変数を持つものは定義(正確には定義できるが、内部で普通の変数にもどされてるっぽい)できなかった。
- メソッド定義も可能
- 関連関数もできる? -> できる
Optionの紹介
- Rustに
null
はない。代わりにOptionがある - Noneを指定する場合に型が必要。Someの場合はすでに値が入るから推測可能なため。
match制御フロー演算子
- アーム -> matchしたときの処理のこと
- 短い場合は波括弧は不要
- returnなしでmatchが書いてあるだけだと、慣れない場合に値を返していることに気づかないかも(実際気づけてないかも)
- Enumが値を持っているときに、値の束縛がmatch式で可能
- すべての列挙子を網羅していないことをコンパイラが検知してくれるのはすごく助かる。
- ただし、
_
を利用していなければだけど
- ただし、
if letで簡潔な制御フロー
- enumで1つのパターンのときに処理をしたい場合に使えるmatchの糖衣構文
- elseもかけるよ。
まとめ
enumに慣れていないので、値や構造体を持つenumを利用するという想像ができないことがありそうだなぁと読みながら思いました。 それになれると、色々とプログラムがシンプルに書ける部分が多くなりそうかな。
comments powered by Disqus
See Also by Hugo
- Rust the book - 第8章
- Rust the book - 第10章
- Rust the book - 第9章
- Rust the book - 第5章
- Rust the Bookを読み始めた
Related by prelims-cli
FEATURED TAGS
aws
azure search
berlin buzzwords
bot
cloudera
cloudera search
conference
curator
dev container
diyキーボード
elastic
elasticsearch
fluentd
hadoop
hugo
java
kibana
kuromoji
logstash
lucene
lucene-gosen
manifoldcf
marvel
misc
morphlines
music
nlp100
octopress
opensearch
paper
plugin
python
riak
rust
rust-the-book
search
shield
solr
visual studio code
wikipedia
windows
workplace search
yokozuna
zipkin
オライリー
ブログ
備忘録
勉強会
振り返り
本
検索
読書
転職