为什么不重复“重复”* 3`与Ruby中的`3 *“重复”`相同?

前端之家收集整理的这篇文章主要介绍了为什么不重复“重复”* 3`与Ruby中的`3 *“重复”`相同?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我输入这个:
puts 'repeat' * 3

我明白了:

>> repeat repeat repeat

但如果我这样做,它就无法运作:

puts 3 * 'repeat'

为什么?

解决方法

在Ruby中,当你调用* b时,你实际上正在调用一个名为*的方法.试试这个,例如:
a = 5
=> 5
b = 6
=> 6
a.*(b)
=> 30

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

因此< String> *< Fixnum>工作正常,因为String上的*方法了解如何处理整数.它通过将自身的多个副本连接在一起来做出响应.

但是当你做3 *“重复”时,它在Fixnum上用String参数调用*.这不起作用,因为Fixnum的*方法希望看到另一种数字类型.

猜你在找的Ruby相关文章