ruby-on-rails - 将散列作为函数参数处理

标签 ruby-on-rails ruby ruby-on-rails-3 hash methods

我正在使用 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/

相关文章:

ruby-on-rails - Rails - 乐观锁定总是触发 StaleObjectError 异常

ruby - 如何检测递归数组和哈希?

ruby-on-rails - Rails,为什么此帮助程序不输出HTML,而是输出引号中的HTML?

使用关联模型的 Ruby on Rails 项目

ruby-on-rails - 在 RoR 2.x 中使用 respond_to 通过 ajax 实现优雅降级

ruby-on-rails-3 - 尝试在 Windows 上使用 ffi 和 typhoeus gems 但我需要 libcurl

javascript - 将 jQuery.pageless 与 turbolinks 结合使用

ruby-on-rails - 建模收藏夹

ruby-on-rails - 将数组数组转换为哈希数组

ruby-on-rails - Rails 导出到 CSV 而不在内存中构建 CSV