2013-12-20 2 views
0

저는 자바 프로그래머이고 루비를 더 잘 사용하려고 노력하고 있습니다.하지만 기본 원리는 실패하고 어디에도 가지 않습니다. 여기에 내 수업루비 함수 정의를 찾을 수 없습니다.

class Main 
     a = Car.new 
     a.instance_variable_set("@make", 'Hyundai') 

     if a.make == 'Hyundai' 
     self.get_hyundai_vehicle_information(a) 
     end 

     def get_hyundai_vehicle_information(a) 
     go_to_hyundai_usa_and_select_vehicle 
     end 
    end 

이다 그러나 나는 오류를

undefined method 'get_hyundai_vehicle_information' for Main:Class

+0

문제를 재현하는 데 필요한 전체 코드를 제공해야합니다. 이 스 니펫이 충분하지 않습니다. –

+0

클래스 선언 자체에서이 코드를 실행 중이며 아직 정의되지 않았습니다. * 클래스 선언 중에 물건 *을 할 때 순서가 중요합니다. –

+0

기능을 선언 한 후'get_hyundai_vehicle_information'을 호출하면됩니다. 'def self.get_hyundai_vehicle_information'로 세분화하십시오. –

답변

2

당신은 클래스 본문에서 실행되는 코드가 사용자의 Main 클래스의 싱글 톤 클래스의 컨텍스트에서 실행됩니다 점점 ​​계속. 이는 기본적으로 클래스 생성 중에 클래스 범위에서 한 번 실행되지만 클래스 인스턴스에서는 실행되지 않습니다.

이제 정의한 메소드는 인스턴스에서만 사용할 수 있습니다 (즉, 인스턴스 메소드). 메서드 이름 앞에 self.을 붙임으로써 클래스 메서드를 정의 할 수 있습니다. 그런 다음 메서드를 정의해야 호출 할 수 있습니다.

루비에서는 모든 코드가 순서대로 평가된다는 것을 기억하십시오. 여기에는 클래스와 메소드 정의가 포함됩니다. 메소드를 정의한 코드가 실행되기 전에 메소드를 호출 할 수 없습니다.

관련 문제