2017-08-23 231 views
1

如果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'}}}

我該如何改變這種行爲?

+0

「我該如何改變這種行爲?」 - 那麼不要做包裝。 'private_method options' –

+1

嘗試'private_method options' – Abhi

+1

'private_method選項:options'意味着'private_method({選項:選擇})' – Stefan

回答

3

public_methodoptions已經是一個Hash。當你調用private_method你將它嵌入到另一個哈希。不要這樣做。

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