【发布时间】:2014-06-10 04:16:18
【问题描述】:
这是在一个共享库中,我必须使它向后兼容。
原始方法
def rrp_exc_sales_tax=(num)
price_set(1, num, currency_code)
end
需要增强和添加currency_code
def rrp_exc_sales_tax=(num, currency_code=nil)
print "num=#{num}"
print "currency_code=#{currency_code}"
price_set(1, num, currency_code)
end
some_class.rrp_exc_sales_tax=2, "USD"
num=[2, "USD"]
currency_code=
没有值被分配给currency_code
【问题讨论】:
-
对于那些反对并要求关闭的人来说,这提出了一个关于 ruby 语言以及如何实现功能的好问题。在将人们赶出网站之前请考虑一下。
-
setter 方法(例如以
=结尾的方法)应保留用于通过赋值=设置实例变量。在您的情况下,最好将其转换为真正的方法调用,因为您的方法内部不会发生赋值。原始设计的核心存在缺陷,使用=能否请您发布价格设置方法,以便我们了解分配是如何发生的。
标签: ruby