Ruby:在方法之间传递选项参数

标签 ruby methods

如果 public_method 被调用:

public_method hello: 'world'

def public_method options = {}
    puts options[:hello]
    private_method options: options
end

private

def private_method options = {}
    puts options[:hello]
end

它将'world 和转发到private_method。 该方法不会像预期的那样接收 {:options=>{:hello=>'world'}}。相反,它接收 {:options=>{:options=>{:hello=>'world'}}}

我怎样才能改变这种行为?

最佳答案

public_method中,options已经是一个Hash。当您调用 private_method 时,您将其嵌入到另一个哈希中。不要这样做。

def public_method options = {}
    puts options[:hello]
    private_method options
end

关于Ruby:在方法之间传递选项参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45839930/

相关文章:

php - ruby 相当于 php snoopy

javascript - Rails ActiveRecord BigNum 到 JSON

ruby - 覆盖 AR 订单范围

methods - 列表类型的 defmethod

java - java中用户定义包的访问方法

ruby - Ruby App MVC框架(非Web)

ruby-on-rails - 使用 Rails 为现有的 CLI Ruby 脚本构建 GUI?

javascript - 在 JavaScript 中创建二维数组的方法

java - 调用方法时将数组初始化为参数

python - 什么时候应该直接调用 __method__ ?