在我的课堂上,我根据个人的日记录构建每日流动性状态。这是以前日期的一个简单状态函数,其中:
- daily_state(day_1(=值(day _1(
- daily_state(day_N(=值(day _N(+daily_state(day _N-1(
下面的代码:
def build
days.each_with_index.map do |_, index|
days[index][:total_sum] += days[index - 1][:total_sum] unless index.zero?
build_single(days[index])
end
end
def build_single(day)
Liquidity::DailyRecord.new(day[:day], day[:total_sum])
end
Liquidity::DailyRecord = Struct.new(
:day,
:total_sum
)
但现在我想通过将revenues_sum
添加到结构中来扩展此功能,如下所示:
Liquidity::DailyRecord = Struct.new(
:day,
:total_sum,
:revenues_sum
)
如何将地图从build
方法更改为处理以下数据:
days = [
{:day=>Mon, 23 Nov 2020, :total_sum=>#<Money fractional:0 currency:EUR4>},
{:day=>Tue, 24 Nov 2020, :total_sum=>#<Money fractional:0 currency:EUR4>},
{:day=>Sun, 29 Nov 2020, :total_sum=>#<Money fractional:0 currency:EUR4>, :revenues_sum=>#<Money fractional:0 currency:EUR4>},
{:day=>Mon, 30 Nov 2020, :total_sum=>#<Money fractional:39999786000 currency:EUR4>, :revenues_sum=>#<Money fractional:40000000000 currency:EUR4>},
]
据我所知,您应该能够通过稍微更新代码来实现这一点
def build(days)
days.each_with_index.map do |_, index|
days[index][:total_sum] += days[index - 1][:total_sum] unless index.zero?
days[index][:revenues_sum] = 0 if days[index][:revenues_sum].nil?
days[index][:revenues_sum] += days[index - 1][:revenues_sum] unless index.zero?
build_single(days[index])
end
end
def build_single(day)
Liquidity::DailyRecord.new(day[:day], day[:total_sum], day[:revenues_sum])
end