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

时间:2017-08-23 12:36:20

标签: 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'}}}

如何更改此行为?

1 个答案:

答案 0 :(得分:3)

public_method中,options已经是哈希。当你致电private_method时,你将它嵌入另一个哈希。不要这样做。

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