传递哈希的唯一构造

时间:2011-12-03 17:00:59

标签: ruby

我从未见过构建哈希的这个构造。 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)

2 个答案:

答案 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}

以上两者都是等效的。

使用新的哈希语法时要记住的一件事是密钥将始终被视为符号。