Ruby%运算符

Ruby%运算符,ruby,string,Ruby,String,我很难理解下面的代码片段在做什么 "foo = %{foo}" % { :foo => 'bar' } => "foo = bar" 因此,根据理解,“foo=%{foo}”是格式规范,但在本例中,它似乎使用%{foo}执行变量插值?使用给定字符串作为格式规范,并应用参数(数组/哈希)并返回结果字符串 %{…}是按名称格式化的引用。还有%也需要格式样式(s、d、f等) “foo=%{key}”%{:key=>'bar'} #=>“foo=bar” “foo=%s”%{:key=>b

我很难理解下面的代码片段在做什么

"foo = %{foo}" % { :foo => 'bar' }
=> "foo = bar"
因此,根据理解,“foo=%{foo}”是格式规范,但在本例中,它似乎使用%{foo}执行变量插值?

使用给定字符串作为格式规范,并应用参数(数组/哈希)并返回结果字符串

%{…}
是按名称格式化的引用。还有
%
也需要格式样式(s、d、f等)

“foo=%{key}”%{:key=>'bar'}
#=>“foo=bar”
“foo=%s”%{:key=>bar'}
#=>“foo=bar”
有关格式规范的更多详细信息,请参阅。

字符串的#%引用


在sprintf的文档末尾,您将看到两种使用名称(带有散列参数)而不是位置(带有数组参数)的替换类型的简要说明。

解释类似内容的简单方法是查看行的第一部分,这是字符串文字(
foo=%{foo}
),因此,%符号表示字符串()的%方法,因此文本实际上是格式规范的第一部分,即字符串的表示方式。%后面的部分必须是数组或散列,在本例中是进行命名替换的散列,这意味着
是散列中必须存在的键的名称,返回值

您可以使用普通替换编写此代码,但需要两行代码

hash = { :key => 'bar' }
"foo = #{hash[:key]}" 
或者只是使用一个变量

foo = "bar"
"foo = #{foo}"

如果不涉及其他内容,则可读性更高。

希望示例片段更好;左撇子把我弄糊涂了。如果可能,尝试将其更改为其他内容,可能会使代码片段更清晰。
foo = "bar"
"foo = #{foo}"