[#30220] schedule for Ruby 1.8.6 — "Akinori MUSHA" <knu@...>

 ruby-core を読んでいない人もいると思うので、ここでもアナウンス

20 messages 2007/01/30

[ruby-dev:30211] String#sub!{...}

From: Kazuhiro NISHIYAMA <zn@...>
Date: 2007-01-29 15:59:52 UTC
List: ruby-dev #30211
西山和広です。

http://zunda.freeshell.org/d/20070126.html#p04
とそのリンク先の
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/palm-ja-proxy/blazer-ja-proxy/bin/blazer-ja-proxy?rev=1.42.2.10&only_with_tag=RUBY_DEBUG_070126&view=auto
をみて最小はどのくらいになりそうか試してみました。


% irb-1.8.5
ruby 1.8.5 (2006-08-25) [i686-linux]
>> (s='a').sub!(//){//=~s;'b'};s.scan(/./m)
=> ["b", ""]
>> (s='a').sub!(//){//=~s;'ABC'};s.scan(/./m)
=> ["A", ""]
>> (s='foo').sub!(//){//=~s;'bar'};s.scan(/./m)
=> ["b", "a", "r", ""]
>> (s='foo').sub!(//){//=~s;'hoge'};s.scan(/./m)
=> ["h", "o", "g", ""]
>> (s='foo').sub!(//){//=~s;'hogefuga'};s.scan(/./m)
=> ["h", "o", "g", ""]
>> (s='foobar').sub!(//){//=~s;'hogefuga'};s.scan(/./m)
=> ["\000", "\000", "\000", "\000", "a", "r", ""]

などと色々試していて、sub!の中でのマッチ(//=~s)後に
文字列が長くなっているとおかしくなっているように
見えます。

というわけで、最小はこのくらいになりそうです。

>> (s='').sub!(//){//=~s;'a'};s.scan(/./m)
=> [""]

-- 
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)

In This Thread

Prev Next