Как определить метод при инициализации объекта?

Имею класс. Как в методе initialize создать новый метод налету? Т.е. в зависимости от входных параметров initialize создать и поименовать метод, чтобы он был доступен у экземпляра

class Foo
	def initialize x
		if x>0
			def positive
			end
		else
			def negative
			end
		end
	end
end

f = Foo.new 1
f.positive
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
gururuby
@gururuby
Ruby-разработчик
Здравствуйте, можно сделать это вот так:
class Foo
  def initialize x
    if x>0
       define_singleton_method(:positive) { puts 'positive' }
    else
       define_singleton_method(:negative) { puts 'negative' }
    end
  end
end

Хотя как по мне это довольно странное желание создавать методы налету в initialize )
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
MpaK999
@MpaK999
Буду!
define_method :method_name do 
 puts "i'am instance method"
end
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы