Rubyにおけるクラスメソッドの定義
1367 ワード
Rubyにおけるクラスメソッドの定義
メソッドの受信者は,クラス自体(クラスオブジェクト)のメソッドがクラスメソッドとなる.クラスメソッドのいくつかの形式は次のとおりです.
上の3つの方法だと思ったら大間違いです.インターネットで資料を調べたところ、次のような方法がありました:=.=
extendキーワード拡張クラスメソッドを使用します.
クラスメソッド定義:メソッドの受信者はクラス自体のメソッドがクラスメソッドとなる.Rubyでは、すべてのクラス自体がClassクラスのオブジェクトであるため、クラスメソッドを次のように理解することができます. Classクラスのインスタンスメソッド クラスオブジェクトの一例方法
メソッドの受信者は,クラス自体(クラスオブジェクト)のメソッドがクラスメソッドとなる.クラスメソッドのいくつかの形式は次のとおりです.
#1. class <
#2. class self , , class << self ~ end
class ClassMethod
class << self
def Hello(name)
puts "#{name} say hello!"
end
end
end
ClassMethod.Hello("Bob")
#3. def . ~end
class ClassMethod
def ClassMethod.SayHello(name)
puts "#{name} say hello"
end
end
ClassMethod.SayHello("Ruby")
#4. self
class ClassMethod
def self.SayHello(name)
puts "#{name} say hello"
end
end
ClassMethod.SayHello("Bob")
上の3つの方法だと思ったら大間違いです.インターネットで資料を調べたところ、次のような方法がありました:=.=
class ClassMethod
ClassMethod.instance_eval do
def SayHello(name)
puts "#{name} say hello"
end
end
end
extendキーワード拡張クラスメソッドを使用します.
module ClassMethod
def cmethod
"Class Method"
end
end
class MyClass
extend ClassMethod
end
p ClassMethod.cmethod #=>"Class Method"
クラスメソッド定義:メソッドの受信者はクラス自体のメソッドがクラスメソッドとなる.Rubyでは、すべてのクラス自体がClassクラスのオブジェクトであるため、クラスメソッドを次のように理解することができます.