Actions
Feature #8853
openShould String#sub(pattern) returns an Enumerator?
Status:
Open
Assignee:
-
Target version:
-
Description
調べてみたのですが、過去に同様の議論があったのかどうかわからなかったので起票します。
以下のように String#sub(pattern) と使うと ArgumentError が発生します。
$ ruby -e "p ''.sub(//)"
-e:1:in sub': wrong number of arguments (1 for 2) (ArgumentError) from -e:1:in
'
一方、 String#gsub(pattern) だと Enumerator を返します。
$ ruby -e "p ''.gsub(//)"
#<Enumerator: "":gsub(//)>
RDoc ではこの挙動は説明されていませんでした。
String#gsub(pattern)がEnumeratorを返すことについては書かれています。
http://www.ruby-doc.org/core-2.0.0/String.html#method-i-sub
http://www.ruby-doc.org/core-2.0.0/String.html#method-i-gsub
一貫性の観点から考えると、String#sub(pattern)もEnumeratorを返した方が良いように思いましたがいかがでしょうか。
まあ、String#sub だと置換は一回しか発生しないのでイマイチな感じはします。
- String#sub(pattern) が Enumerator を返すようになる
- RDoc に String#gsub(pattern) と違って String#sub(pattern) が ArgumentError を発生させることの記述が追加される
のどちらかが、満たされればいいと思っています。
Files
Actions
Like0
Like0