在不使用实例变量的情况下更改实例返回值

时间:2018-09-07 12:08:56

标签: ruby-on-rails ruby

有人可以为此给我最好的解决方案吗

我有一个class

Class A

  def a
    return "a" if @logic
    return "b"
  end

  def change_logic
    @logic = true
  end

end

在我的解决方案中,我应该能够做到

object = A.new
object.change_logic
object.a #print "a"

object = A.new
object.a #print "b"

为此,我创建了方法change_logic,它将更改@logic实例变量。

但是我需要在没有像@logic这样的实例变量的情况下实现这一点

什么是最好的方法?

1 个答案:

答案 0 :(得分:1)

如果您需要更改有条件返回的内容,但又不想在实例级别上获取该条件,则需要将该方法告知该条件。例如,

Class A
  def a(logic = false)
    logic ? 'a' : 'b'
  end    
end

然后它将被调用为:

object = A.new
object.a(true) #print "a"

object = A.new
object.a #print "b"