Как отследить изменения переменной экземпляра вне класса в Ruby? - PullRequest
0 голосов
/ 21 июля 2011

Я довольно новичок в Ruby и создаю программу, которая в основном работает как интерактивный сад, где пользователь будет вводить, какой тип дерева он хочет вырастить, а затем давать команды для полива, обрезки, сбора и сбора дерева,

Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь заставить программу запрашивать команды, пока дерево не умрет, что происходит на определенной высоте.Высота определяется в переменной экземпляра внутри класса, и я не могу понять, как заставить программу отслеживать эту переменную вне класса, чтобы она продолжала запрашивать команду, пока не будет достигнуто определенное значение.

Приведенный ниже код - это начало и конец кода, но не средние части, которые работают нормально.Каждая из команд внизу работает один раз, но затем программа заканчивается.Любая помощь будет оценена.

class Orangetree

def initialize name
@name = name
@height = 0
@branches = 0
@winter = false
@orangesontree = 0
@orangesinbasket = 0
@timeOfyear = 0
puts @name + 'Just Sprouted! What would you like to do with him?'
end

puts 'Welcome to the Orchard! What would you like to grow today?'
reply = gets.chomp
while reply != 'oranges' 
puts 'I am sorry, we do not have that kind of tree, try again'
gets.chomp
end
oranges = Orangetree.new 'Woody '
while Orangetree |@height| <= 61
  command = gets.chomp
  if command == 'water'
   puts oranges.rain
  end  
  if command == 'pick'
  puts oranges.pick
  end
  if command == 'prune'
   puts oranges.prune
  end 
  if command == 'harvest'
   puts oranges.harvest
  end
end  

1 Ответ

0 голосов
/ 21 июля 2011

Вы не можете получить доступ к полю экземпляра объекта вне его класса напрямую.Используйте метод получения.

Добавление attr_writer :height в ваш класс даст вам это.

Тогда вы можете ссылаться на высоту вне класса с помощью

while oranges.height <= 61
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...