2016-07-26 8 views
-1

を呼び出す:は、私はクラスを持っているインスタンスメソッドやクラスメソッド

Class Temp 
    def Temperature 
    puts "It's hot" 
    end 
end 

私はそれのインスタンスを呼び出すことができます。

mytemp = Temp.new 

私はそれにメソッドTemperatureを呼び出すことができます。インスタンスクラスまたはクラスメソッドを呼び出すかどうかを知るにはどうすればよいですか?

+0

インスタンスクラスとは何ですか? – sawa

+0

コードが無効です。 – sawa

+0

*実際の答えはもちろん、Rubyにはクラスメソッドがないということです。 Rubyには、インスタンスメソッドという1種類のメソッドしかありません。 *実際の質問は、*どのクラス*が定義されたメソッドであるか、*あなたがそれらを呼び出すインスタンス*となります。 –

答えて

2

以下のクラスを定義します。私は小文字で始まるメソッドを皆のように定義しました。

class Temp 
    def temperature 
    puts "I am instance" 
    end 

    def self.temperature 
    puts "I am class" 
    end 
end 

t = Temp.new 
t.temperature 

- > "私はインスタンス"


Temp.temperature 

- > "私はクラス"


t = Temp.new 
t.class.temperature 

- >「私はクラスだ」

は、それが助け、物事が明確に願っています:)

2

クラスをインスタンス化するには.newを呼び出す必要があるため、Temperatureはインスタンスメソッドです。クラスメソッドを定義するには、メソッド名にselfを追加します(def self.Temperature)。次にクラスをインスタンス化せずに呼び出す:Temp.Temperature

関連する問題