[#40785] nil以外のときメソッドを呼ぶ — Motomichi Matsuzaki <mzaki@...>

13 messages 2005/04/27

[ruby-list:40787] Re: nil以外のときメソッドを呼ぶ

From: "H.Shimura" <shimurahiroyuki@...>
Date: 2005-04-27 05:19:25 UTC
List: ruby-list #40787
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


In This Thread