我从未见过构建哈希的这个构造。 do_stuff(records: records)
这仅适用于发送给方法的参数列表吗?是否记录在任何地方?我知道它是Ruby 1.9 +。
records = {
'example.com' => '1.2.3.4',
'hello.com' => '44.33.22.22',
}
def do_stuff(data = {} )
puts data
end
do_stuff(records: records)
答案 0 :(得分:6)
这里有两件事。 {1.9}中的{ key: value }
语法是新的。它相当于{ :key => value }
。
此外,Ruby方法有一些语法糖,允许您传入哈希文字作为方法的最后一个参数,而不包括花括号。这是Ruby 1.9中不的新功能。所以
do_stuff(key: value)
相当于
do_stuff({ key: value })
只是提醒您,这只有在散列是方法的最后一个参数时才有效。
答案 1 :(得分:0)
Ruby 1.9中Hashes的新语法允许您删除哈希火箭。
#Pre 1.9
{:key => value}
#1.9+
{key: value}
以上两者都是等效的。
使用新的哈希语法时要记住的一件事是密钥将始终被视为符号。