2015-05-22 3 views
-2

Я хочу, чтобы добиться того, что спецификации говоритНужна помощь в настройке класса с attr_accessor

describe "Car" do 
    describe "initialize" do 
    it "should take make, model and year" do 
     new_car = Car.new("Acura", "Integra", 1998) 
     expect(new_car.make).to eq("Acura") 
     expect(new_car.model).to eq("Integra") 
     expect(new_car.year).to eq(1998) 
    end 
    end 

И это то, что я придумал до сих пор, и я не знаю, что делать дальше.

class Car 
    attr_accessor :make, :model, :year 
end 

Мне нужна помощь в настройке остального и объяснении, как это работает. Спасибо!

+1

ли вы имеете в виду? 'def initialize (make, model, year); @ make, @ model, @ year = make, model, year; end' Это довольно простой вопрос, вы пробовали Google или какие-либо учебники, такие как tryruby или rubymonk? – engineersmnky

ответ

0

ниже аксессорах:

def initialize(make, model, year) 
    @make = make 
    @model = model 
    @year = year 
end 

метод Initialize вызывается всегда, когда вы используете :: новый.

Он принимает аргументы, которые вы написали в :: новые и имена их должным образом (в этом примере сделать = «Acura» и т.д.)

attr_accessor :make 

принимает @make от инициализации и создает другие методы для вас: One прочитать переменную:

def make 
    @make 
end 

и один для записи переменной:

def make(str) 
    @make = str 
end 

В этом конкретном примере

attr_reader 

достаточно, нет необходимости в

attr_accessor 
Смежные вопросы