class Car
attr_reader :doors, :color
def initialize(doors, color)
@doors = doors
@color = color
end
end
class Motorcycle
attr_reader :cc, :color
def initialize(cc)
@cc = cc
@color = obtain_color
end
def obtain_color
'orange' if my_car.color == 'green'
'blue'
end
end
class Vehicles
attr_reader :my_car, :my_motorcycle
def initialize
@my_car = Car.new(4, 'green')
@my_motorcycle = Motorcycle.new(950)
end
def display_colors
puts "my_car color: #{my_car.color}"
puts "my_motorcycle color: #{my_motorcycle.color}"
end
end
my_vehicles = Vehicles.new
my_vehicles.display_colors
는 당연히 다음과 같은 오류 발생 :Ruby : 다른 객체의 getter를 사용하여 다른 객체를 초기화하는 방법은 무엇입니까?
class Car
attr_reader :doors, :color
def initialize(doors, color)
@doors = doors
@color = color
end
end
class Motorcycle
attr_reader :cc, :color
def initialize(cc, my_car)
@cc = cc
@color = obtain_color(my_car)
end
def obtain_color(my_car)
'orange' if my_car.color == 'green'
'blue'
end
end
class Vehicles
attr_reader :my_car, :my_motorcycle
def initialize
@my_car = Car.new(4, 'green')
@my_motorcycle = Motorcycle.new(950, my_car)
end
def display_colors
puts "my_car color: #{my_car.color}"
puts "my_motorcycle color: #{my_motorcycle.color}"
end
end
my_vehicles = Vehicles.new
my_vehicles.display_colors
질문 :
in 'obtain_color': undefined local variable or method 'my_car' for #<Motorcycle:0x007fc1820690a0 @cc=950> (NameError)
는이 문제를 해결하기를, 나는이 같은 my_car
객체로 건네 my_car.color
를 호출하는 방법이 있나요 의 초기화 내에서 my_car
개체를 전달하지 않아도됩니까?
아니요, 사용자는 클래스의 구성원이 아닌 데이터를 전달해야합니다. – DiegoSalazar
Forwardable? –