为什么Ruby setter方法的行为类似于赋值表达式?

时间:2015-12-27 05:42:58

标签: ruby methods setter

我在price=类中有一个Ticket方法,只有在小数点后最多有两个值时才设置价格: -

def price=(price)
    if (price*100).to_i == price*100
          @price = price
    else
          "The price format is off!"
    end
end

现在,当我添加代码puts price=(50.75543)时,我将50.75543作为输出。我想到了两个问题: -

  1. 为什么代码甚至可以工作?方法调用本身无效(我尝试使用方法名称set_price而不是price=,并且它会抛出错误),因为我甚至没有创建{{{ 1}}类。这几乎就好像Ticket方法被视为变量赋值。

  2. 即使代码为price=,其中puts t.price=(50.75543)t类的实例,但输出为Ticket。为什么会这样?如何输出“价格格式已关闭!”?

0 个答案:

没有答案