2014-09-10 2 views
0

Eval을 사용하여 클래스의 인스턴스를 만들고 싶습니다.eval을 사용한 인스턴스 개체 액세스

완벽하게 작동합니다.

하지만 개체에 액세스 할 수 없습니다.

carreg = "bmw" 

Eval(carreg+"= Car.new")  < should evaluate to bmw = Car.new 

괜찮습니다. 완전한. 하지만 bmw.inspect을 입력하면 아무런 변화가 없습니다. 어떤 아이디어?

편집 : 내가 수동으로 bmw = Car.new을한다면, 나는 다음 개체에 액세스 할 수 있습니다 IRB에

...처럼 당신은 클래스가 작동하는 방법을 찾아 볼 필요가 bmw.inspect

+3

왜이 경우'eval'을 사용하고 있습니까? 당신이 잘못된 문제를 해결하려고한다고 생각하니? –

+0

새로 워진 Ruby. 나에게 참아주십시오 :-) 사용자에게 묻습니다. 'puts "Reg 플레이트?" 'carreg = gets.chomp'. 어떻게 그럴 수 있습니까? –

+0

당신은 그 모든 것을하지 않을 것입니다, 당신은 단지'car = Car.new (carreg)'라고 말하고'Car'는 그것이 BWM이라는 것을 알게합니다. –

답변

0

.

class Car 
    attr_accessor :carreg 

    def display 
     puts "CarReg = #{@carreg}" 
    end 
end 


car = Car.new 
car.carreg = gets.chomp 
car.display 

그런 시도해보십시오.

+0

고마워,하지만 난 내가 원하는 걸 가지고 있다고 생각해. my 클래스는 initialize 메소드에'@@ instances << self'를 가지고 있습니다. 나는 이제'def self.instances @@ instances end'와 같은 메소드를 만들었고 과 같은 타입의 객체에 대한 세부 정보에 접근 할 수 있습니다 : 'Car.instances.each {| a | a.reg == regnum}' –

+0

이제, 질문은 특정 유형의 객체에서 propertys 등을 액세스하는 올바른 방법입니까? 아이디어는 사용자가 특정 자동차의 부동산을보고 싶다면 Reg 번호를 주어야하며 코드는이를 사용하여 객체를 찾습니다. (p.s 내가 overcomplicating 것 ...하지만 그냥 배울려고) –

+0

그리고 문제는 왜 내가 당신의 코드를 사용하여 @ user2891803 만약 당신이 더 많은 하나의'자동차'가있을 수 있습니다. 귀하의 예에서는 carreg가 여러 개있을 수 있으므로 매번 gets.chomp가 호출되면 속성이 무시됩니다. 이 이유는 내가 자동차의 여러 개체를 원하는 이유입니다 –

관련 문제