2016-10-03 3 views
-2

У меня есть метод Ruby:Где я могу назвать метод класса Ruby?

class ClassOfSomeSort 
    def self.methodOfSomeSort(argument) 
    ... 
    end 

    methodOfSomeSort(5) 

end 

я услышал вызов метода в классе само по себе является плохой практикой.

Где я могу его назвать? В C++ есть функция int main, где это делается, но где это делается в Ruby?

+0

Вы можете просто написать свой код (который был бы в основном) на [ «верхний уровень»] (HTTP: // StackOverflow. com/questions/9687106/is-there-a-main-method-in-ruby-like-in-c), так сказать. Или вы можете посмотреть [этот вопрос SO] (http://stackoverflow.com/questions/582686/should-i-define-a-main-method-in-my-ruby-scripts) – UnholySheep

+1

Мне не удалось понять, почему это плохо. – Aetherus

+2

В качестве примечания, в Ruby имена методов должны быть похожими на 'method_of_some_sort', избегая капиталов и вместо этого использовать символы подчеркивания. Классы похожи на то, что у вас есть. – tadman

ответ

0

Руби является интерпретируемым языком, поэтому простая программа может выглядеть следующим образом:

print "Hello, World!" 

И это все. Вы можете запустить эту программу из командной строки, вызывающей ruby fileName.rb. В вашем примере вы можете просто назвать его после объявления класса:

class ClassX 
    def self.MethodOfMine(argument) 
    # method 
    end 
end 

ClassX.MethodOfMine(5) 
+0

«Класс» - это класс основных объектов. Кроме того, создание экземпляра этого класса, а затем вызов методов на нем означает, что это методы экземпляра, а это не так. – tadman

+0

@tadman справа, спасибо. исправлено – rsqLVo

0

Вы можете вызывать методы класса в любое время и в любом контексте:

class Example 
    def self.demo! 
    puts "Hello, world!" 
    end 
end 

Example.demo! 

Это в отличие от методов экземпляра, когда вам нужно создать экземпляр чего-то. Если у вас нет методов экземпляров и не используется для них, определите module так же.

0
class Example 
def self.methodOfMine(argument) 
... 
end 
end 

object = Example.methodOfMine(InsertAnything) 

Вызов метода вне класса пути создания экземпляра :)

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