传递哈希的唯一构造

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

这里有两件事。 { key: value }语法是Ruby 1.9中的新增function。 它相当于{ :key => value }

此外,Ruby方法有一些语法糖,允许您传入哈希文字作为方法的最后一个参数,而不包括花括号。 这在Ruby 1.9中并不新鲜。 所以

 do_stuff(key: value) 

相当于

 do_stuff({ key: value }) 

只是为了提醒您,这只有在散列是方法的最后一个参数时才有效。

Ruby 1.9中Hashes的新语法允许您删除哈希火箭。

 #Pre 1.9 {:key => value} #1.9+ {key: value} 

以上两者都是等价的。

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