2010-02-09 77 views
3

是仍然有些新的紅寶石,我不知道如何做到這一點?比方說,我有一個採用可變數量的參數的方法:如何動態創建方法的參數?

高清mytest的(*參數) 提出args.to_json 結束

很顯然,我可以與任何我喜歡稱呼它,比如:

mytest的( '一', '二', '三化')

沒問題。但我需要做的是用動態創建的一組參數來調用它。例如,我從數據庫中提取了一個結果集,並且我不知道有多少條目會回來。比方說,我想收集結果id,並用它們調用mytest() - 我將如何構造傳遞給mytest()的參數集?

這似乎有點明顯,但無論出於何種原因,事實並非如此。我意識到我可以改寫mytest()來獲取一個數組或哈希,但我實際上正在試圖調用一個我沒寫的插件中的方法。

回答

13

我不知道我理解你的問題。你問如何將數組轉換爲方法的參數?閱讀本

比方說,你有這樣的:

a = [1,2,3,4] 

,並採取4個參數,就像一個方法:

def whatever(p1,p2,p3,p4) 
    # do whatever you want with them here 
end 

您可以調用該方法,像這樣:

whatever(*a) 

和數組的元素將按照您希望的方式發送。

+0

我認爲這就是他想要的。 – Trevoke 2010-02-09 20:57:54

+0

是的,就是這樣,謝謝!實際上,對於我們這些來自包含C背景的人來說,這看起來既古怪又明智。我想出的唯一的另一個解決方案是在適當地構建字符串之後使用eval(),但由於多種原因,這顯然不是很好。 – Masonoise 2010-02-11 16:53:57