目次
Rustで言語処理100本ノックのリファクタリングの続き。
前回はこちら。
コードも載せたほうが見やすいかなぁ?
03. 円周率
2年前はこちら。 どちらかというとJavaっぽい書き方かな? 入れ物を用意して、入力を整形して、それからループを回す感じで書いてました。
今回は1行で収めてみました。
Rustっぽく、return
を省略してみました。
あとは、Iteratorを組み合わせる感じでやってます。
アルファベットの文字数ということで、is_alphabetic()
メソッドでfilterしてます。
04. 元素記号
2年前はこちら。 エラー処理が多いのと、文字の扱いがちょっと
ここまで同様に極力イテレータを利用するという方針でリファクタリングしました。 あとは、エラー処理を除去してます。 正常系だけのテストなのでスッキリさせました。
こういった、ストリーム系?の書き方の場合にエラー処理をどう入れるかってところはちょっと悩みどころになるんじゃないかなぁ?と思いつつ、イレギュラーなものは後回しで(あとにやるのかなぁ?)
05. n-gram
2年前はこちら。 これまでと同じく、入れ物を作ってから処理をしてます。
同じく、極力イテレータを利用する形で実装しました。
いくつか型の変換が必要なので、.map()
を呼び出して詰め替えたりしています。
06. 集合
2年前はこちら。 独自に実装しています。
せっかく05
で文字n-gramの配列を返す処理を実装しているので、
そちらを呼び出して、Setに入れるという処理に書き換えました。
その後の集合に対する処理については特にリファクタリングしてないです。
まとめ
2年前にやってたところまでは追いつきました。 07は特にリファクタリングする必要がないので、次は08からの予定です。
リファクタリングしているときになるのは、速度とかでしょうか。 実装の違いでなにか差が出るのかどうかはちょっと気になるところですが、 今回の目的ではないので、目をつぶって進める予定です。
comments powered by Disqus
See Also by Hugo
- 第1章の03から04までやってみた(言語処理100本ノック)
- 第4章終了(言語処理100本ノック2020)
- 第3章終了(言語処理100本ノック2020)
- 第1章の08から09まで(言語処理100本ノック2020)
- 第1章の05から06までやってみた(言語処理100本ノック)