所以我真的很喜欢 Lisp 中的这种语法:
(+ 1 1 2 3 5 8 13)
=> 33
我想在 Ruby 中添加一个项目列表,并希望尽可能地近似它。现在,我最好的解决方案涉及一个数组和 collect/map 方法。
所以:
sum = 0; [1,1,2,3,5,8,13].collect { |n| sum += n }
但...
我想为此添加可以返回 nil 的方法。
sum = 0; [1, booking_fee, 8,13].collect { |n| n = 0 if n.nil?; sum += n }
这样做真的很好,中间的所有行都引用可能返回 nil 的方法,但我不能以这种方式完全构建数组。这只是我希望我的语法看起来像的一个想法。
def total
Array.new do
booking_fee
rental_charges
internationalization_charges
discounts
wild_nights
end.collect { |n| n = 0 if n.nil?; sum += n }
end
在我尝试破解并执行 Greenspun 规则之前有什么建议吗?(编程确实是一种强迫症。