次のようなフラットファイルをフォーマットしてオブジェクトにするモジュールを作った。
ファイル名: names.txt Ken, 24 Mary, 20 John, 31 Mary Ann, 3 次のファイル、flat.rb がそれだ。 ファイル名: flat.rb module Flat def read(path, format) IO.read(path).split(/\n/). collect{|x| x.split(/,/)}. collect{|x| eval format} end end 使い方は次のようにする。 irb を起動して、require 'flat' し、include Flat する。すると、Flat モジュールのフォーマッとつきフラットファイル読み込みメソッド read(path, format) が使えるようになる。path にはテキストファイルのパスの文字列、format にはフォーマットのためのコードブロックを表した文字列を割り当てる。format はread メソッドの定義の最後の collect ブロックの中で eval される。動作を文章で説明するのは難しいので下の実行例を実際に実行してもらうと簡単に分かると思う。 実行例 irb irb(main):001:0> require 'flat' => true irb(main):002:0> include Flat => Object irb(main):003:0> read('names.txt', 'x') => [["Ken", " 24"], ["Mary", " 20"], ["John", " 31"], ["Mary Ann", " 3"]] irb(main):004:0> read('names.txt', '{:name=>x[0], :age=>x[1]}') => [{:age=>" 24", :name=>"Ken"}, {:age=>" 20", :name=>"Mary"}, {:age=>" 31", :name=>"John"}, {:age=>" 3", :name=>"Mary Ann"}] irb(main):005:0> read('names.txt', '[x[0], x[1].to_i]') => [["Ken", 24], ["Mary", 20], ["John", 31], ["Mary Ann", 3]] したがって、次のように read の出力を、変数 table に代入すると、テキストファイル names.txt を読み出して、table オブジェクトにすることができる。 table = read('names.txt', '{:name=>x[0], :age=>x[1].to_i}') いったん table オブジェクトさえできてしまえば、あとの処理はRubyのスクリプトで思い通りにできてしまう。
by tnomura9
| 2008-09-10 21:31
| Ruby
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||