8

これを入力すると:

puts 'repeat' * 3

私は得る:

>> repeat repeat repeat

しかし、私がこれを行うとうまくいきません:

puts 3 * 'repeat'

なんで?

4

1 に答える 1

28

Ruby では、 を呼び出すとa * b、実際には*onというメソッドを呼び出していますa。たとえば、これを試してください:

a = 5
=> 5
b = 6
=> 6
a.*(b)
=> 30

c = "hello"
=> "hello"
c.*(a)
=> "hellohellohellohellohello"

メソッド on は整数の処理方法を理解している<String> * <Fixnum>ため、このように問題なく動作します。それは、自身の複数のコピーを連結することによって応答します。*String

しかし、あなたがするとき、それは引数で3 * "repeat"呼び出し*ています。のメソッドは別の数値型を想定しているため、これは機能しません。FixnumStringFixnum*

于 2010-03-30T07:07:56.483 に答える