我試圖編寫一個幫助器,它使用零值作爲零進行求和。趁着下面的方法從this answer.在.map()中使用變量
items.map(&:some_field).sum(&:to_i)
的問題是,因爲我正在寫一個幫手,:some_field
將需要傳過來的變量。那麼我如何在.map中使用該變量?像下面這樣:
items.map(&:send(field)).sum(&:to_i)
任何提示,將不勝感激
我試圖編寫一個幫助器,它使用零值作爲零進行求和。趁着下面的方法從this answer.在.map()中使用變量
items.map(&:some_field).sum(&:to_i)
的問題是,因爲我正在寫一個幫手,:some_field
將需要傳過來的變量。那麼我如何在.map中使用該變量?像下面這樣:
items.map(&:send(field)).sum(&:to_i)
任何提示,將不勝感激
您應該簡單地手工編寫塊傳遞給map
方法:
items.map { |item| item.public_send(field) }.sum(&:to_i)
塊是在Ruby中關閉,所以如果有field
局部變量在這個範圍內,它也可以在塊內部訪問。
出於好奇,'物品'從哪裏來?如果來自單個模型(如'Item'),那麼我想知道你是否不能執行Item.sum(:field)'。即使'items'來自不同的模型,你也許可以使用'.sum(:field)',但這需要多一點工作。 – jvillian