传递哈希的唯一构造

sli*_*000 1 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)
Run Code Online (Sandbox Code Playgroud)

jer*_*son 6

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

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

do_stuff(key: value)
Run Code Online (Sandbox Code Playgroud)

相当于

do_stuff({ key: value })
Run Code Online (Sandbox Code Playgroud)

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