17
我有一個名爲範圍是這樣的:named_scope參數列表中的變量平均值之前的星號是什麼?
named_scope :by_items, lambda |*items| {
:joins => :items,
:conditions => ["items.id in (?)", items.map(&::id)]
}
什麼的*item
是什麼意思?當我與Item.find(:first, ...)
通話時,它工作正常。如果我嘗試使用集合,Item.find(:all, ...)
它失敗。
從不同的SO問題,我知道的簽名應該是:
Order.by_items(item0, item1, ...)
所以,我的問題真的是,我怎麼把一個數組轉換成一個逗號分隔的參數列表?
UPDATE0
從Martin Fowler我學到:
(使用「*」的參數列表與Ruby的變量參數的工作有助於在參數列表*盤指示然後我可以參考所有以「磁盤」數組形式傳入的磁盤,如果我使用「*磁盤」調用另一個函數,則磁盤數組的元素將作爲單獨的參數傳入。)
UPDATE1
更多關於the "splat" operator。
這就是神奇! – 2009-11-10 21:32:47