我认为我可能不会以最红宝石的方式编写懒惰的实例化方法/属性.以此方法为例:
def tax
@tax ||= Proc.new do
if flat_tax > commission_plan.tax_max
return commission_plan.tax_max
end if commission_plan.tax_max
if flat_tax < commission_plan.tax_min
return commission_plan.tax_min
end if commission_plan.tax_min
flat_tax
end.call
end
Run Code Online (Sandbox Code Playgroud)
有没有更像红宝石的方法来重构这种方法?
def tax
@tax ||= calc_tax
end
private
def calc_tax
min, max = commission_plan.tax_min, commission_plan.tax_max
if (min..max).include? flat_tax
flat_tax
else
flat_tax > max ? max : min
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |