string%4 - >什么是红宝石

时间:2011-07-07 22:00:27

标签: ruby-on-rails ruby

在ruby中%用于格式化字符串。

str % arg → new_str

但是我没有得到

number = '/javascripts/cache/money.js'.bytes.sum % 4

在此提交https://github.com/rails/rails/commit/f6a6b51ae551b7f936e974cba3ad4b30422d6804

5 个答案:

答案 0 :(得分:4)

这取决于对象的类。

在字符串上,%的行为如下:

"Hello, %s" % ['world'] #=> "Hello, world"

请注意,在Ruby 1.9.2中,您可以添加名称:

"Hello, %{name}" % {:name => "Nick"} #=> "Hello, Nick"

有关详细信息,请参阅docs

但是,在整数上,它是模数函数。请参阅Fixnum docsNumeric 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

是模数方法

http://apidock.com/ruby/Bignum/%25