まつもと ゆきひろです

In message "[ruby-dev:19982] Re: ""*n"
    on 03/04/10, Tadayoshi Funaba <tadf / rc5.so-net.ne.jp> writes:

|> |rb_str_times ですけど、こうしても構わないですか?
|> 
|> 分かる気もするんだけど、推測するよりもはっきり聞きたいと思い
|> ます。なぜですか?
|> 
|> 「負の繰り返し」はエラーだと思うんだけど。
|
|僕、またボケて、勘違いしてるのかな。長さ零の文字列に対して繰り返すのは
|無駄かと思ったんですが。負の繰り返しも含めて、繰り返しには触れていない
|つもりです。

えーと、聞きたかったのは理由なんですが、要するに「無駄を無く
すため」ですかね。でも、省略される

     if (len < 0) {
 	rb_raise(rb_eArgError, "negative argument");
     }
     if (LONG_MAX/len <  RSTRING(str)->len) {
 	rb_raise(rb_eArgError, "argument too big");
     }

のコストはほとんどゼロだと思うんですが。

それと上記の変更を加えると

  "" * -5

がエラーにならなくなっちゃうんですよね。