これを入力すると:
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"
呼び出し*
ています。のメソッドは別の数値型を想定しているため、これは機能しません。Fixnum
String
Fixnum
*