Project

General

Profile

Actions

Bug #2327

closed

String#upto で beg が非英数の時破壊的変更がその後に影響する

Added by naruse (Yui NARUSE) over 14 years ago. Updated almost 13 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.2dev (2009-11-02 trunk 25631) [x86_64-freebsd8.0]
Backport:

Description

=begin
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")}
ぁ=> "ん"

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

Actions

Also available in: Atom PDF

Like0
Like0