From: rubikitch Date: 2005-04-27T14:25:38+09:00 Subject: [ruby-list:40788] Re: nil以外のときメソッドを呼ぶ From: Motomichi Matsuzaki Subject: [ruby-list:40785] nil以外のときメソッドを呼ぶ Date: Wed, 27 Apr 2005 13:43:03 +0900 るびきちです。 > タブ区切りテキストで与えられるデータを解釈しようとしているのですが、 > フィールドの数が不定の場合、 > > 例: > array = line.chomp.split("\t") > float = array.shift.to_f > int = array.shift.to_i > str = array.shift.sub(/^XX/, '') 僕なら構造体をを派生させたクラスを作成します。 とはいえ、最大フィールド数が決まってる場合だけですが。 splitされたそれぞれの文字列において、 CONVERTERで指定したメソッドを順次呼出します。 class String def strip_XX sub(/^XX/, '') end end class TextData < Struct.new(:float, :int, :str) CONVERTER = [:to_f, :to_i, :strip_XX] def self.[](input) obj = new input.chomp.split(/\t/).each_with_index do |x, i| obj[i] = (x && x.__send__(CONVERTER[i])) end obj end end p TextData[ "1\t2\t3" ] p TextData[ "1.0\t2\t"] p TextData[ "1\t2\tXXfoo" ] るびきち☆ http://www.rubyist.net/~rubikitch/ ←Ruby大衆化計画@移転