[ruby-dev:39626] [Bug #2327] String#upto で beg が非英数の時破壊的変更がその後に影響する

View: New views
1 Messages — Rating Filter:   Alert me  

[ruby-dev:39626] [Bug #2327] String#upto で beg が非英数の時破壊的変更がその後に影響する

by Roger Pack-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Bug #2327: String#upto で beg が非英数の時破壊的変更がその後に影響する
http://redmine.ruby-lang.org/issues/show/2327

起票者: Yui NARUSE
ステータス: Open, 優先度: Normal
カテゴリ: core
ruby -v: ruby 1.9.2dev (2009-11-02 trunk 25631) [x86_64-freebsd8.0]

String の場合、upto のブロックパラメータを破壊的に変更することが出来ますが、
非英数の際にこれがその後の挙動に影響を与えることがあります。

irb(main):001:0> "1".upto("9"){|x|print x;x.replace("9")}
123456789=> "1"
irb(main):002:0> "a".upto("z"){|x|print x;x.replace("z")}
abcdefghijklmnopqrstuvwxyz=> "a"
irb(main):003:0> "\u3041".upto("\u3093"){|x|print x;x.replace("\u3093")}
ぁ=> "ん"
irb(main):004:0> s="\u3041";s.upto("\u3093"){|x|print x;x.replace("\u3093")}
ぁ=> "ん"

以上のように、"ぁ"のみで終わってしまったり、戻り値が変わってしまったりします。


----------------------------------------
http://redmine.ruby-lang.org