两个变量之间的下划线是什么意思?

时间:2017-05-05 04:18:59

标签: ruby syntax

两个变量之间的下划线是什么意思?

例如:{ "#{type}_#{data['blah']}" : "#{data['blahblah']}" }

2 个答案:

答案 0 :(得分:1)

在您的情况下,它并不特定于Rails。它只是字符串连接。基本上,type = "foo"data['blah'] = bar然后,你最终会得到:

{ "foo_bar" : "whatever is in the data['blahblah']" }

答案 1 :(得分:1)

Ruby的双引号string literalssymbol literals允许通过#{...}进行插值。它像占位符一样工作。括号内给出的表达式的结果将转换为字符串并插入给定位置:

"1 + 2 = #{1 + 2}"
#=> "1 + 2 = 3"

回到你的问题:

  

两个变量之间的下划线是什么意思?

在字符串中,下划线是文字下划线,即_

您的代码使用动态创建的符号键和字符串值创建哈希:

type = 'foo'
data = { 'blah' => 'bar', 'blahblah' => 'baz' }

{ "#{type}_#{data['blah']}": "#{data['blahblah']}" }
#=> {:foo_bar=>"baz"}

您的代码中存在小错字::不得有尾随空格。

此外,如果字符串不包含其他内容,则不需要插值。如果data['blahblah']是一个字符串,您只需写:

{ "#{type}_#{data['blah']}": data['blahblah'] }

否则:

{ "#{type}_#{data['blah']}": data['blahblah'].to_s }