1
我想從Array
像String#strip
末一個刪除不必要Hash
,所以我寫這樣的:是否可以每次調用Array#中的Array#pop?
a = [{date: Date.today, foo: nil},
{date: Date.today - 1, foo: 1},
{date: Date.today - 2, foo: 8},
{date: Date.today - 3, foo: nil},
{date: Date.today - 4, foo: nil},
{date: Date.today - 5, foo: 7},
{date: Date.today - 6, foo: nil}
]
a.reverse.each do |v|
v[:foo].nil? ? a.pop : break
end
此代碼的工作如我所料不錯。
=> [{:date=>Tue, 24 Feb 2015, :foo=>nil},
{:date=>Mon, 23 Feb 2015, :foo=>1},
{:date=>Sun, 22 Feb 2015, :foo=>8},
{:date=>Sat, 21 Feb 2015, :foo=>nil},
{:date=>Fri, 20 Feb 2015, :foo=>nil},
{:date=>Thu, 19 Feb 2015, :foo=>7}]
但它是確定呼叫Enumerable#each
Array#pop
? 我覺得在循環內改變數組本身是不安全的。
不安全,怎麼樣?雖然不是特別優雅,但如果它完成了工作......我不認爲這種方法存在任何安全問題。 – dgilperez 2015-02-23 16:08:19