Изменить возвращаемое значение экземпляра без использования переменных экземпляра - PullRequest
0 голосов
/ 07 сентября 2018

Может кто-нибудь дать мне наилучшее из возможных решений для этого,

У меня есть 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 голосов
/ 07 сентября 2018

Если вам нужно изменить то, что возвращается условно, но вам не нужно условие на уровне экземпляра, тогда метод должен быть проинформирован о том, что это за условие. Например,

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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...