传递哈希的唯一构造
我从未见过构建哈希的这个构造。 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}
以上两者都是等价的。
使用新的哈希语法时要记住的一件事是,密钥将始终被视为符号。