我正在阅读“Rails 3 Way”和第39页,它显示了匹配:to =>
重定向方法的代码示例。在该方法中,存在以下代码。虽然我知道模数对数字有什么作用,但我不确定%在下面做了什么,因为路径和参数都显然不是数字。如果有人能帮我理解在这种情况下使用%,我会很感激。
proc { |params| path % params }
答案 0 :(得分:10)
这可能是String#%
方法,与其他语言中的sprintf
非常相似:
'%05d' % 10
# => "00010"
它可以采用单个参数或数组:
'%.3f %s' % [ 10.341412, 'samples' ]
# => "10.341 samples"
更新:正如Philip指出的那样,这种方法也需要哈希:
'%{count} %{label}' % { count: 20, label: 'samples' }
# => "20 samples"
当然,这是假设path
是一个字符串。在Ruby中,除非您仔细阅读代码,否则您永远不会确定。这不太可能,但可能%
意味着模数。
你可以肯定的是它在%
上调用方法path
。
答案 1 :(得分:2)
它进行字符串插值。在最简单的情况下,它相当于:
"foo %s baz" % 'bar'
#=> "foo bar baz"
但是,您也可以使用更复杂的格式说明符来从Array或Hash对象进行插值,例如Rails params 哈希。有关如何构建有效格式规范的详细信息,请参阅String#%和Kernel#sprintf方法。