2012-11-13 42 views
4

我是Ruby新手。我的示例代碼是給我這個例外:嘗試調用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>' 

過程與退出代碼完成1個

我的代碼是:

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

我使用的RubyMine 4.5.4。

回答

0

試試這個:

class Hello 
    def first_method 
    puts "Hello World" 
    end 
end 

Hello.new.first_method 
3

的問題是,您要撥打first_method在類 - 和first_method是一個實例方法。要調用實例方法,您需要使用該類的一個實例。要製作課程實例,您可以使用SomeClass.new。所以,用你的方法,試試這個代碼(相同的代碼@megas):

class Hello 
    def first_method 
    puts "Hello World" 
    end 
end 

Hello.new.first_method 
3

相較於其他答案(但要實現相同的輸出),如果你確實想要一個方法調用中工作你的類,你可以簡單地將方法定義一個類的方法:

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/

相關問題