Encontrei essa ontem: desde a versão 1.9.2-180 existe uma introspecção que retorna quais são os parâmetros de um método.
Confuso? Vai um pouco de código, então:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Test | |
def initialize(param1, *param2, param3, param4: '', param5: nil) | |
end | |
end | |
params = Test.instance_method(:initialize).parameters | |
puts params.inspect | |
# => [[:req, :param1], | |
# [:rest, :param2], | |
# [:req, :param3], | |
# [:key, :param4], | |
# [:key, :param5]] |
Ele retorna um array com arrays de 2 elementos, o primeiro symbol é o tipo e o segundo o nome do parâmetro:
- :req - parâmetro obrigatório
- :rest - parâmetros variáveis (usando "*" splat)
- :key - parâmetro nomeado (novo no Ruby 2.0)
Nenhum comentário:
Postar um comentário