Ruby % 运算符
Ruby % operator
我无法理解以下代码片段的作用
"foo = %{foo}" % { :foo => 'bar' }
=> "foo = bar"
所以根据理解,"foo = %{foo}" 是格式规范,但在这种情况下,它似乎使用 %{foo}?
执行变量插值
String#%
使用给定的字符串作为格式规范,并应用参数(数组/散列)和 return 结果字符串。
%{...}
是按名称格式引用。还有 %<...>
也需要格式样式 (s, d, f, ...)
"foo = %{key}" % { :key => 'bar' }
# => "foo = bar"
"foo = %<key>s" % { :key => 'bar' }
# => "foo = bar"
有关格式规范的更多详细信息,请参阅 Kernel#sprintf
。
doc of String#%
refers to sprintf
.
在 sprintf
的文档末尾,您将找到对使用名称(带有散列参数)而不是位置(带有数组参数)的两种替换类型的简要说明。
解释这样的事情的简单方法是查看该行的第一部分,这是一个字符串文字 (foo = %{foo}
),因此 % 符号表示字符串的 % 方法 (String#%),所以文字实际上是格式规范的第一部分,即字符串的呈现方式。 % 之后的部分必须是数组或散列,在本例中是进行命名替换的散列,这意味着 key
是散列中必须存在的键的名称,返回值 bar
你可以用正常的替换来写这个,但是你需要两行代码。
hash = { :key => 'bar' }
"foo = #{hash[:key]}"
或者只使用一个变量
foo = "bar"
"foo = #{foo}"
如果不涉及其他内容,则更具可读性。
我无法理解以下代码片段的作用
"foo = %{foo}" % { :foo => 'bar' }
=> "foo = bar"
所以根据理解,"foo = %{foo}" 是格式规范,但在这种情况下,它似乎使用 %{foo}?
执行变量插值String#%
使用给定的字符串作为格式规范,并应用参数(数组/散列)和 return 结果字符串。
%{...}
是按名称格式引用。还有 %<...>
也需要格式样式 (s, d, f, ...)
"foo = %{key}" % { :key => 'bar' }
# => "foo = bar"
"foo = %<key>s" % { :key => 'bar' }
# => "foo = bar"
有关格式规范的更多详细信息,请参阅 Kernel#sprintf
。
doc of String#%
refers to sprintf
.
在 sprintf
的文档末尾,您将找到对使用名称(带有散列参数)而不是位置(带有数组参数)的两种替换类型的简要说明。
解释这样的事情的简单方法是查看该行的第一部分,这是一个字符串文字 (foo = %{foo}
),因此 % 符号表示字符串的 % 方法 (String#%),所以文字实际上是格式规范的第一部分,即字符串的呈现方式。 % 之后的部分必须是数组或散列,在本例中是进行命名替换的散列,这意味着 key
是散列中必须存在的键的名称,返回值 bar
你可以用正常的替换来写这个,但是你需要两行代码。
hash = { :key => 'bar' }
"foo = #{hash[:key]}"
或者只使用一个变量
foo = "bar"
"foo = #{foo}"
如果不涉及其他内容,则更具可读性。