Любая рубиновая библиотека для проверки того, какие аргументы используются определенными методами? - PullRequest
2 голосов
/ 21 июня 2011

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

Ответы [ 2 ]

7 голосов
/ 21 июня 2011

Есть Метод # arity , в котором указано, сколько аргументов может принять метод.

Однако вы не можете определить, какие типы объектов ожидает метод. Это просто не в природе Ruby.

3 голосов
/ 21 июня 2011

Я не знаю каких-либо сторонних библиотек или даже RubyGems, которые могут сделать это надежно. Это просто невозможно сделать, учитывая ограниченные возможности отражения, которые предоставляет Ruby.

Вам придется обойтись тем, что доступно в базовой библиотеке, которая в основном Method#parameters:

def foo(a, b=nil, *c, d, &e); end
method(:foo).parameters
  # => [[:req, :a], [:opt, :b], [:rest, :c], [:req, :d], [:block, :e]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...