フォームオブジェクトを使用して複数枚画像を投稿する処理をシンプルなRubyで 表現した場合どうなるのかなとイメトレとしてやってみた。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def fizzbuzz(num) | |
1.step(num) do |n| | |
if n % 15 == 0 | |
puts 'FizzBuzz!' | |
elsif n % 3 == 0 | |
puts 'Fizz!' | |
elsif n % 5 == 0 | |
puts 'Buzz!' | |
else | |
puts n |
- checkを呼ぶと、まず配列の中身が右の数字より大きいかチェックします。
- 右の数字が大きい場合はそのまま続行、小さい場合は並び替えメソッドb_sortが動きます。
- b_sortメソッドにはチェックした配列が渡されて、その中で1つ右の数字以上のものは数字を入れ替え、それ以外のものはそのままです。
- index番号が1からスタートしているので、配列のサイズと同じになるとすべての数字に対して処理が終わっている事となります。 その為、再度checkメソッドを呼んで配列の並びをチェックします。
- 再度checkメソッドで並びをチェックします。(この後は複数回1~5の繰り返しです。)
- 最後にcheckメソッドのindexが配列のサイズと一緒になるのはすべてが昇順に並び替えられている時だけだから、そのタイミングでretrunを使用して処理を終わらせます。
デザインパターンのひとつStrategy Pattermの例を見つけたので実行してみました! ほとんどコピペで参考サイトに書いてあるのと同じ!けど練習と知識定着の為に、一つ新しいクラスを作ってこのまとめも書きました笑
まず親クラス今回はReport
クラスがあって、ここではレポートを出力するメソッドoutput_reort
が存在する。
ただHTML形式で書き出したい場合と、Text形式で書き出したい場合がある。その場合if文を書いてしまうとど形式が増えるたびにどんどん条件分岐が増えてしまい
管理がかなり大変になる。
なのでレポートの形式をクラスに格納してしまって、呼び出したいときに呼び出すようにしよう!というのがストラテジーパターンの考え方。 今回は、3つの形式があります
OlderNewer