我正在使用 Ruby on Rails 3,我正在尝试将散列作为函数参数进行处理。
例如,如果我这样声明一个函数:
def function_name(options = {})
...
end
我想向 function_name
传递一个类似
{"key1"=>"value_1", "key2"=>"value2", "..." => "..."}
然后在函数内部使用它。
什么是最佳\常见 (Rails) 方法?
P.S.:我在某处看到了 extract_option!
方法,但我不知道在哪里可以找到一些文档,也不知道我是否需要这些文档才能实现我的目标。
最佳答案
只需使用您提供的定义:
def function_name(options = {})
puts options["key1"]
end
调用它:
function_name "key1" => "value1", "key2" => "value2"
或
function_name({"key1" => "value1", "key2" => "value2"})
Array#extract_options!仅与具有可变方法参数的方法一起使用,如下所示:
def function_name(*args)
puts args.inspect
options = args.extract_options!
puts options["key1"]
puts args.inspect
end
function_name "example", "second argument", "key1" => "value"
# prints
["example", "second argument", { "key1" => "value" }]
value
["example", "second argument"]
另一个有用的方法是 Hash#symbolize_keys!这让您不必关心是否将字符串或符号传递给您的函数,以便您始终可以访问像这样的 options[:key1]
。
关于ruby-on-rails - 将散列作为函数参数处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5318857/