Как напечатать имена параметров метода - PullRequest
1 голос
/ 04 октября 2011

Существует ли быстрый способ вывода возможных имен параметров метода ruby?

Например:

def my_method(param1, param2, param3, ...)
  # stuff
end

puts get_params("my_method")

, который будет выводить что-то вроде:

param1
param2
param3
...

Спасибо!

О, кстати, я на ри-1.8.7 ...

1 Ответ

4 голосов
/ 04 октября 2011

Как насчет:

class A
  def my_method(param1, param2, param3)
    # stuff
  end
end

A.instance_method(:my_method).parameters # => [[:req, :param1],[:req, :param2],[:req, :param3]]

A.instance_method(:my_method).parameters.collect { |p| p[1] } # => [:param1, param2, param3]

А если вы сделаете это на консоли irb, как в вашем примере:

>> def my_method(param1, param2, param3)
>>   # stuff
>> end
=> nil

>> def get_params(method_name)
>>   self.class.instance_method(method_name.to_sym).parameters.collect { |p| p[1] }.each { |name| puts name }
>> end
=> nil

>> get_params(:my_method)
param1
param2
param3
=> [:param1, :param2, :param3]

(Копировать / вставить из моей консоли irb.)

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