Использованиерубин Начинающий: Не удается получить создания методов работы
- Рубин 2.1.4
- Mac OSX 10.9.5
- Text Wrangler
- Terminal
Работа на Эта проблема: «Создайте класс под названием Car. Дайте ему метод new_car, который вернет пустой массив. (Этот массив символизирует новый автомобиль, который является bein g, построенный на заводе.) Затем создайте метод, который берет пустой массив, возвращаемый методом blank_array, и добавляет некоторую важную часть автомобиля в этот массив и возвращает новый массив. Затем создайте метод, который принимает этот новый массив, и добавит еще что-то еще к нему и т. Д. Сделайте это, пока у вас не будет всего пять методов. Поэтому, к концу, у вас должен быть один метод, который в конечном итоге вернет массив, содержащий четыре части автомобиля. (Например: [«двигатель», «колеса», «радио», «подстаканник»]) «
Итак, я создал класс и бросил туда некоторые методы, чтобы я мог« построить »машину. в IRB и создал переменный с именем newcar
написав newcar = Car.new
когда я печатаю newcar.new_car
рубин возвращает пустой массив Однако, когда я называю любого из других методов, которые я получаю THS сообщения об ошибке:..
NameError: undefined local variable or method
автомобиля»для # от автомобиля. гь: 9: в add_wheels' from (irb):5 from /UserName.rvm/rubies/ruby-2.1.4/bin/irb:11:in
«`
class Car
def new_car
car = []
return car
end
def add_wheels
car << "wheels"
return car
end
def add_axels
car << "axels"
return car
end
def add_engine
car << "engine"
return car
end
def add_radio
car << "radio"
return car
end
end
Любая помощь appreci ованные!
Одна вещь. Почему вы используете '@ car' только в' new_car' и аксессуарах везде? Есть ли какая-то конкретная причина? Если да, укажите это в ответе. Если нет - упомяните, что нет =) ... и это может быть хорошим местом для введения 'initialize'. –
@ D-side: Я думаю, что вы не читали примечание внизу, я ясно сказал, почему '@ car' находится в' new_car'. Конечно, было бы неплохо иметь метод инициализации, OP больше обеспокоен тем, почему ошибка является неопределенной локальной переменной метода 'car' в программе. – Surya
Я прочитал его перед тем, как спросить, это довольно сложная часть Ruby. Я думал, что 'attr_accessor' должен был определять методы, которые изменяли соответствующую переменную экземпляра (': car' для '@ car', и это действительно так), а использование' @ car' непосредственно после этого бессмысленно. Я предполагал, что использование только 'car = []' будет работать (вызывается 'car ='), но оказывается, что вместо этого создается локальная переменная. Да. –