これを入力すると:
puts 'repeat' * 3
私は得る:
>> repeat repeat repeat
しかし、私がこれを行うとうまくいきません:
puts 3 * 'repeat'
なんで?
これを入力すると:
puts 'repeat' * 3
私は得る:
>> repeat repeat repeat
しかし、私がこれを行うとうまくいきません:
puts 3 * 'repeat'
なんで?
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*