在ruby中%
用于格式化字符串。
str % arg → new_str
但是我没有得到
number = '/javascripts/cache/money.js'.bytes.sum % 4
在此提交https://github.com/rails/rails/commit/f6a6b51ae551b7f936e974cba3ad4b30422d6804
中答案 0 :(得分:4)
这取决于对象的类。
在字符串上,%
的行为如下:
"Hello, %s" % ['world'] #=> "Hello, world"
请注意,在Ruby 1.9.2中,您可以添加名称:
"Hello, %{name}" % {:name => "Nick"} #=> "Hello, Nick"
有关详细信息,请参阅docs。
但是,在整数上,它是模数函数。请参阅Fixnum docs和Numeric docs。
答案 1 :(得分:3)
我认为这个%是整数模数。
'/javascripts/cache/money.js'.bytes returns an Enumerator
'/javascripts/cache/money.js'.bytes.sum returns an Integer
'/javascripts/cache/money.js'.bytes.sum % 4 returns an Integer
他们可能自己定义了sum方法,这可能是问题的原因?
答案 2 :(得分:1)
这实际上只是字符串中所有字节的总和,模4。
答案 3 :(得分:1)
假设sum返回数组中的数字总和,那么您在此处number % number
,而不是str % arg
。
答案 4 :(得分:1)
number = '/javascripts/cache/money.js'.bytes.sum % 4
是
int % int -> int
是模数方法