对于我的这些代码,我实在是头疼级了,简化一部分后的模型
def get_weekday_counts
week_results=@week_results
result=Array.new()
i=0
weekday_counts=0
while i5
weekend_counts=weekend_counts+1
end
i=i+1
end
return weekend_counts
end有点大材小用的感觉,但是用来学习还是相当不错的例子,于是就一步步来,事实上,原先的代码可以直接用返回两个值来解决,这个就是Ruby的另外一个优点。
def self.define_component(name)
define_method(name){
i=0
day=DayCount.new(0,0)
while i<@week_results.size
@result=@result.push(@week_results[5])
sum=@week_map[@week_results[5]]
if sum>5
day.weekend=day.weekend+1
elsif sum<=5
day.weekday=day.weekday+1
end
i=i+1
end
day.send"#{name}"
}
end
self.define_component:weekday
self.define_component:weekend
def get_week_counts
week_results=@week_results
result=Array.new()
i=0
weekday_counts=0
while i5
weekend_counts=weekend_counts+1
end
i=i+1
end
return weekend_counts
end
于是我们就找到了这其中的重复部分。 动态方法生成
def self.define_component(name)
define_method(name){
i=0
day=DayCount.new(0,0)
while i<@week_results.size
@result=@result.push(@week_results[5])
sum=@week_map[@week_results[5]]
if sum>5
day.weekend=day.weekend+1
elsif sum<=5
day.weekday=day.weekday+1
end
i=i+1
end
day.send"#{name}"
}
end
self.define_component:weekday
self.define_component:weekend动态生成后的代码如上所示。 白板及总结