在查看一些Ruby代码时,我发现了以下方法:
def connection
unless @_mc_connection && valid? && @_ns_version == get_version
@_mc_connection = ::Dalli::Client.new(self.dalli_servers, self.dalli_options.merge(namespace: namespace))
end
@_mc_connection
end
我的问题是关于dalli_options.merge(namespace: namespace)
的使用。结肠的目的是什么?哈希成员?
答案 0 :(得分:5)
这里结肠的目的是什么?哈希成员?
是的,它是一个Hash对象。
可以使用隐式格式轻松创建Hash
:
grades = { "Jane Doe" => 10, "Jim Doe" => 6 }
当您的键始终是符号时,哈希允许使用其他语法形式。而不是
options = { :font_size => 10, :font_family => "Arial" }
你可以把它写成:
options = { font_size: 10, font_family: "Arial" }
答案 1 :(得分:2)
根据Ruby版本,这是Hash
文字(1.9)或关键字参数(2.0 +)。
答案 2 :(得分:1)
冒号是符号语法的一部分。
以下是等效的:
namespace: #only valid inside a hash
和
:namespace
对于前者,可以省略'hash rocket'运算符(=>
)(通常是为了便于阅读)。
但是,只有当您的键是符号时才会出现这种情况。如果你的键是字符串,如
{ 'namespace' => 'api' }
哈希火箭是必需的。