我試圖把2行的代碼紅寶石成1。例如:產生一個修改的Ruby陣列塊
def average(numbers)
result = numbers.compact
numbers.reduce(+)/numbers.length
end
我一直期待通過陣列方法,並不能找到一個適當的一個把這個功能變成一個單線程。我希望像這樣的工作:
def average(numbers)
numbers.compact.<tap or another method> { |arr| arr.reduce(+)/arr.length }
end
基本上,我修改陣列(在我打電話緊湊擺脫nil
值的例子),所以我沒有訪問數組變量,我不想要迭代器,因爲我不想在數組的各個元素上調用reduce(+)
和length
。
有沒有人有我可以看到的方法的想法?
很酷,我剛剛和我的一位隊友交談過,我們同意我的觀點(包括更正內容)最適合可讀性。 –
儘管我在這裏學到了一些東西:'(result = numbers.compact).reduce(:+)/ result.compact.length'謝謝! –
感謝您的更正,@Stefan。我的意思是將平均值的計算結果寫爲'result.reduce(:+)。to_f/result.length',但我更喜歡你做它的方式。 –