まつもと ゆきひろです
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
がエラーにならなくなっちゃうんですよね。