Motomichi Matsuzaki様
		志村 と申します

In message "[ruby-list:40785] nil以外のときメソッドを呼ぶ", <u64y8u8y9.wl%mzaki / biol.s.u-tokyo.ac.jp>, 
Motomichi Matsuzaki wrote...

 >タブ区切りテキストで与えられるデータを解釈しようとしているのですが、
 >    array = line.chomp.split("\t")
 >    float = array.shift.to_f
 >    int   = array.shift.to_i
 >    str   = array.shift.sub(/^XX/, '')

 >対応するフィールドがない場合 float に 0.0 や int に 0 が代入され、
 >str なら例外で落ちてしまいます。

 >ないフィールドには nil が代入されるための綺麗な解決法はないでしょうか?

float や int も 0 でなく nil が欲しいんですよね?

float = Float(array.shift.to_s) rescue nil
int = Integer(array.shift.to_s) rescue nil
str = array.shift.sub(/^XX/,'') rescue nil

こんなのは如何でしょうか。

* 代入の右辺は () でくくった方が分かり易いです。
* Float の .to_s は要らないかも
* .to_s は String() 方が良かったかな?
* 変換エラーが起きたら全て nil になります。
  * float、int に文字列風のがきててもエラーにならないで nil が入る。

ちょっと強引ですね。
---------------------------------------+---------+---------+以上 2005/4/27

志村弘之  mailto: shimurahiroyuki / obun.co.jp