grepとsort_byメソッド・Enumerableモジュール
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
Enumerableモジュールには、eachメソッドを用いて定義されている、多数のイテレータ・ブロック処理のためのメソッドが含まれます。
Enumerableモジュールをインクルードしているクラスならば、これらの便利なメソッドを使えます。
スポンサーリンク
参考:Enumerable – Rubyリファレンスマニュアル
以下のファイルを処理し、Enumerableモジュールに含まれるgrepとsort_byの動作を確認します。
lang.dat
Ruby, Java Perl, PHP, JavaScript COBOL, C++, Python
スクリプトは以下の通り。
最初のgrepを用いた文は、イテレータを後方に渡し続ける処理でちょっと複雑になっていますが、イメージとしては最初にオープンしたFileオブジェクトを、後ろに行くにつれて処理を連結していく感じです。
こんな書き方ができるのは、Rubyのパワフルさを実感できます。
ary = [] File.open("lang.dat").each{|line| # 1行ずつ読み込む # 読み込んだ行を「, 」でsplitし、PまたはRではじまる配列の要素値を取り出す line.split(/, /).grep(/^P|^R/){|item| item.upcase # PまたはRではじまるパターンにマッチした配列の要素値を大文字にする }.each{|item| ary.push(item) # 新しい配列にpushしていく } } p ary # aryを文字列の長さでソート new_ary = ary.sort_by{|item| item.length } p new_ary
実行結果。
["RUBY", "PERL", "PHP", "PYTHON"] ["PHP", "RUBY", "PERL", "PYTHON"]
スポンサーリンク
>> 次の記事 : イテレータを定義する・まずは未定義のクラスの例
<< 前の記事 : ファイルをイテレータ処理
- - 関連記事 -
- 引数のあるイテレータ
- イテレータ定義で複数の引数をブロックに渡す
- クラス内にイテレータ定義
- イテレータを定義する・まずは未定義のクラスの例
- ファイルをイテレータ処理
- イテレータとは
- yield でイテレータを独自に定義
スポンサーリンク