2013-08-09 2 views
-1

В Rails модели, я видел, что я предполагаю, называются методами класса определяется либочеткости self.methodName против четкости имяМетода

 
def methodName 
    #do something 
end 

и

 
def self.methodName 
    #do something 
end 

я не могу найти где-нибудь, что дает описание различий между этими двумя, и когда вы должны использовать один против другого.

Также не уверен, что это относится к Ruby, Rails или другим языкам. Thanks

+0

Что ваш вопрос? (TM) – sawa

ответ

3

Допуская User модель

  1. методы экземпляра

    def methodName 
    
        #do something 
    end 
    

назвать этот использовать метод

User.new.methodName 
  1. Методы класса

    def self.methodName #OR User.methodName 
        #do something 
    end 
    

назвать этот использовать метод

User.methodName 
0

Не оба метода класса.

def methodName - метод экземпляра, а def self.methodName - метод класса.

Различия между ними можно объяснить, как в приведенном ниже примере.

class MyClass 
    def instance_method_name 
    end 

    def self.class_method_name 
    end 
end 


MyClass.class_method_name 
MyClass.new.instance_method_name 
+0

Там нет такого понятия, как "метод класса" в Ruby. Ваш 'class_method' - это метод экземпляра, как и любой другой метод экземпляра, в частности, это метод экземпляра однопользовательского класса MyClass. –

+0

Рубидок не согласен с вами. http://www.ruby-doc.org/core-1.9.3/Class.html – Arjan

2

Первый - метод экземпляра, второй - метод класса. Вы можете найти более подробную информацию here

Смежные вопросы