Наследование классов Ruby или что-то еще - PullRequest
0 голосов
/ 17 декабря 2008

мой класс ruby ​​(на рельсах) выглядит так:

класс Фу def self.method1 SomeAction конец

def self.method2 SomeAction конец

def someAction // doSmth конец конец

есть идеи, как заставить это работать или добиться того же поведения другим способом?

спасибо!

Ответы [ 2 ]

2 голосов
/ 17 декабря 2008

Если some_action подходит как метод класса, я бы сделал это так:

 class Foo
   def self.method1
     some_action
   end
   def self.some_action
     # do stuff
   end
   def some_action
     self.class.some_action
   end
 end

Если method1 должен быть удобным методом, тогда я бы поступил так, как сказал Hates_.

 class Foo
   def self.method1
     self.new.some_action
   end
   def some_action
     # do stuff
   end
 end

Для меня обычно принимается решение, является ли some_action скорее вспомогательным методом (например, генерация случайного ключа, в этом случае я бы выбрал первую форму), или это точка входа в нечто более сложное (например, парсер). в таком случае я бы выбрал вторую форму).

1 голос
/ 17 декабря 2008

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

class Foo 

    def self.method1 
         myFoo = Foo.new
         myFoo.someAction 
    end

    def someAction 
         //doSmth 
    end 

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...