2012-11-13 9 views
4

Ruby를 처음 사용했습니다. 내 샘플 코드는 나에게이 예외를주고있다 : 1 개Ruby에서 메소드를 호출하는 중 예외가 발생했습니다.

내 코드는 종료 코드 완료

C:/Users/abc/RubymineProjects/Sample/hello.rb:5:in `<class:Hello>': undefined method `first_method' for Hello:Class (NoMethodError) 
    from C:/Users/abc/RubymineProjects/Sample/hello.rb:1:in `<top (required)>' 
    from -e:1:in `load' 
    from -e:1:in `<main>' 

프로세스 : 나는 RubyMine 4.5.4을 사용하고

class Hello 
    def first_method 
    puts "Hello World" 
    end 
    first_method() 
end 

합니다.

class Hello 
    def first_method 
    puts "Hello World" 
    end 
end 

Hello.new.first_method 

답변

0

이보십시오. 인스턴스 메소드를 호출하려면 클래스의 인스턴스를 사용해야합니다. 클래스의 인스턴스를 만들려면 SomeClass.new을 사용할 수 있습니다.

는 다른 답변과 달리
class Hello 
    def first_method 
    puts "Hello World" 
    end 
end 

Hello.new.first_method 
3

문제는 당신이 클래스에 first_method를 호출하려고하는 것입니다 - 그리고 first_method은 인스턴스 방법 :

3

(그러나 동일한 출력을 달성하기 위해), 당신이 그랬다면 그 메서드 호출 내에서 작업 할 : 그래서, 당신의 방법을 사용하려면 (@megas 같은 코드)이 코드를 시도 클래스는 단순히 클래스 메서드와 방법을 정의 할 수 있습니다 :

좀 더 자세히 둘 사이의 차이를 설명하는 데 도움이 될 수있는 다음과 같은 링크를 발견
class Hello 
    def self.first_method 
    puts "Hello World" 
    end 
    first_method() 
end 

#=> "Hello World" 

: http://railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby/

관련 문제