将哈希作为函数参数处理
我正在使用 Ruby on Rails 3,并且尝试将哈希作为函数参数进行处理。
例如,如果我这样声明一个函数:
def function_name(options = {})
...
end
我想将一个哈希值传递给 function_name
{"key1"=>"value_1", "key2"=>"value2", "..." => "..."}
,然后在函数内部使用它。
最好的\常见(Rails)方法是什么?
PS:我在某处见过 extract_option!
方法,但我不知道我不知道在哪里可以找到一些文档以及我是否需要这些文档来实现我的目标。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
只需使用您提供的定义:使用
以下方式调用它:
或
Array#extract_options! 只是与具有可变方法参数的方法一起使用,如下所示:
另一个有用的方法是 Hash#symbolize_keys! 让您不必关心是否向函数传递字符串或符号,以便您始终可以访问像这样的东西
options[:key1]
。Simply use the definition you provided:
Call it with:
or
Array#extract_options! is simply used with methods that have variable method arguments like this:
Another useful method is Hash#symbolize_keys! which lets you not care about whether you pass in strings or symbols to your function so that you can always access things like this
options[:key1]
.您在示例中声明它的方式可以正常工作。
在上面的例子中,
item == "Something"
、need_milk == false
和cow == nil
。extract_options
只是通过 Rails 对 Array 和Hash
类进行的补充。如果您计划在 args 中包含许多不同类型的参数,那么它会很有用,但如果您只需要
Hash
选项,那么您原来的方式就可以了。这是 Rails 中
extract_options!
代码的 Gist 我个人在我的代码在工作时只需将其写入外部文件并将其添加到我的项目中即可。The way you have it declared in your example will work fine.
In the case above,
item == "Something"
,need_milk == false
andcow == nil
.extract_options
is simply an addition to the Array andHash
class via Rails.It is useful if you plan on having many different types of parameters in
args
but if you only wantHash
options, your original way is fine.Here's a Gist of the code in Rails for
extract_options!
I personally use it in my code at work by just writing it to an external file and requiring it into my project.Ruby 让这一切变得简单,而且您已经做对了。
这是一个诗歌模式(最小,DSL 风格)的示例:
Ruby makes this easy, and you were already doing it right.
Here is a poetry-mode (minimal, DSL-style) example: