在我学习的过程中,我看到一些库方法中使用了散列参数.

例如.,

list.search(:titles, genre: 'jazz', duration_less_than: 270)

有人能解释一下一个方法是如何使用这样的参数的,以及你如何创建一个使用散列参数的方法吗?

推荐答案

例子:

def foo(regular, hash={})
    puts "regular: #{regular}"
    puts "hash: #{hash}"
    puts "a: #{hash[:a]}"
    puts "b: #{hash[:b]}"
end

foo("regular argument", a: 12, :b => 13)

我使用hash={}指定最后一个参数是散列,默认值为空散列.现在,当我写:

foo("regular argument", a: 12, :b => 13)

它实际上是一种语法糖:

foo("regular argument", {a: 12, :b => 13})

此外,{a: 12}{:a => 12}的语法糖.

当所有这些结合在一起时,您会得到一个语法,它看起来类似于其他语言中的命名参数.

Ruby相关问答推荐

如何使用另一个Ruby 中的Ruby 中的区域设置?

为什么非数字在Ruby中被转换为integer?

ruby 中的魔术注释(#Encoding: utf-8)是如何工作的?

为什么安全导航比在 Rails 中使用 try 更好?

Simple_form:删除带有标签的内联复选框的外部标签

为什么 Range 在下降时不起作用?

在 Go (golang) 中编写一个 Ruby 扩展

object_id 分配如何工作?

如何获取符号链接的目标?

Sinatra 登录?

如何在Ruby中获取给定月份的天数,占年份?

判断 Ruby 中是否存在 URL

Ruby 方法to_sym有什么作用?

你怎么说不等于在 Ruby 中?

使用整数作为哈希键

Ruby 疯狂:类与对象?

Ruby中的字符串和符号有什么区别?

Ruby:从 Ruby 中的变量创建哈希键和值

如何在 Rails 应用程序中使用 httparty 的基本身份验证?

如何在 Ruby 中实现回调?