为什么带有=的ruby方法最后不允许多于一个参数

这是在共享库中,我必须使其向后兼容.

原始方法

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,currency_code)
   end


some_class.rrp_exc_sales_tax=2,"USD"

num=[2,"USD"]
currency_code=

没有值被分配给currency_code

解决方法

如果您希望它向后兼容,请利用数组的强大功能:

def rrp_exc_sales_tax=(arr)
  num,currency_code = arr
  price_set(1,currency_code)
end

some_class.rrp_exc_sales_tax=2,"USD"
# => num=2
# => currency_code="USD"

some_class.rrp_exc_sales_tax=2
# => num=2
# => currency_code=nil

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...