2014-12-04 59 views
2

是否有更好的方法來更新哈希中的哈希值?哪一個更新散列內的散列最好?

例如:

result_hash = { 
    id: queue[:id], 
    status: 
    { 
    added: 0, 
    updated: 0, 
    rejected: 0 
    } 
} 

我用下面的兩條線中的一個:

result_hash[:status][:updated] += 1 
result_hash[:status][:added] += 1 

但閱讀有關hash.update。當我嘗試它時,只有第一個值「:added」被更新。

是否有任何替代品或任何人都可以解釋如何在我的情況下使用hash.update

+1

我認爲你現在的代碼是可以的;我沒有看到更好的選擇。 – GolfWolf 2014-12-04 12:12:59

回答

2

這裏有一個方式,你可以使用update來實現相同的任務:

result_hash[:status].update({ 
    added: result_hash[:status][:added] + 1, 
    updated: result_hash[:status][:updated] + 1, 
}) 

不過,我覺得update是不是在這種情況下有益的,我覺得現有的代碼更清潔,更具有可讀性。

+0

感謝您的建議,但是這會更新這兩個值。我的基本方式更新:添加或更新值。 – Christian 2014-12-04 12:47:27

+0

@Christian然後只需刪除':added'或':updated'這一行。無論如何,結論仍然是:你現在的代碼包含更少的重複,並且更清晰。 – GolfWolf 2014-12-04 12:51:58

+0

我決定採用以下解決方案。我創建了一個函數並傳入了符號。再次感謝! result_hash [:status] [symbol] + = 1 – Christian 2014-12-09 10:22:33