[#38919] Ruby 1.8.1 preview4 — matz@... (Yukihiro Matsumoto)

Hi,

44 messages 2003/12/22
[#38921] Re: Ruby 1.8.1 preview4 — "NAKAMURA, Hiroshi" <nakahiro@...> 2003/12/22

Hi, all,

[ruby-list:38926] Iterated sub!

From: Takanori Adachi <Taka.Adachi@...>
Date: 2003-12-22 19:08:43 UTC
List: ruby-list #38926
足立@モルガンスタンレーです。
業務で ruby に大変お世話になっています。

現在 ruby 1.8.0 を使っていますが、以下のような現象に遭遇しました:


=begin
 
Among the combinations (A|B|C)+(1|2) below,
only (C)+(1) leads the following error message:
 
        private method `sub!' called for nil:NilClass (NoMethodError)
 
=end
 
#va = "10.00"   ## (A)
#va = "10.10"   ## (B)
va = "10.1"    ## (C)
 
## (1)
va.sub!(/[0]+$/,"").sub!(/\.$/,"")
 
## (2)
#va.sub!(/[0]+$/,"")
#va.sub!(/\.$/,"")
 
print va, "\n"
 

これは、文字列としての数字の小数点以下にある末尾の不要な 0 (と小数点)
を取り除くというものですが、va = "10.1" のとき、(1) の gsub! を行う
と、上記のようなエラーが発生します。
これを、(2) のように、ふたつの gsub! に分て実行すると問題なく動きます。

一方 va が、最初の置換 /[0]+$/,"" で変化する場合には、(つまり、"10.00"
や "10.10" の場合には)、(1) であってもうまく動きます。

これは仕様でしょうか?

-- taka

In This Thread

Prev Next