[#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:38927] Re: Iterated sub!

From: Takanori Adachi <Taka.Adachi@...>
Date: 2003-12-22 19:19:27 UTC
List: ruby-list #38927
再び足立、自己レスで申し訳ございません。

Programming Ruby のなかに以下の記述を発見しました。

sub! performs the substitutions of String#sub in place, returning str,
or nil if no substitutions were performed.
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
仕様ということで、理解しました。
大変お騒がせしました。

-- taka

From: Takanori Adachi <Taka.Adachi@morganstanley.com>
Subject: [ruby-list:38926] Iterated sub!
Date: Tue, 23 Dec 2003 04:08:43 +0900

> 足立@モルガンスタンレーです。
> 業務で 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