/ / ruby ​​metaprogramming - uzyskiwanie nazw metod i informacji o parametrach dla klasy - ruby, klasa, metody, metaprogramowanie

ruby metaprogramming - pobieranie nazw metod i informacji o parametrach dla klasy - ruby, klasa, metody, metaprogramowanie

Chcę uzyskać metody klasy w obiekcie. Zobacz następujący przykład Mam klasę „user.rb”

class User
def say_name

end

def walk(p1)

end

def run(p1, p2)

end
end

i napisałem następujący kod

require "user.rb"

a = User.new

arr = a.public_methods(all = false)

Powyższy kod zwróci nazwę metody, ale moje pytanie brzmi: chcę uzyskać nazwę metody z parametrami

def def run(p1, p2)

end

Chcę uzyskać nazwę metody („run”) i nazwy jej parametrów (p1, p2) lub liczbę parametrów (2)

czy ktoś może mi pomóc, z góry dzięki

Twoje zdrowie

sama

Odpowiedzi:

5 dla odpowiedzi № 1
User.new.method(:run).arity   # => 2

1 dla odpowiedzi nr 2

jeśli chcesz parametry, to http://github.com/rdp/arguments jest twoim przyjacielem


0 dla odpowiedzi № 3

Chcesz:

User.new.method(:run).parameters # => [[:req, :p1], [:req, :p2]]

req oznacza, że ​​jest to pole wymagane. Inne wartości, które możesz uzyskać to:

  • def run(p1 = nil) => [[:opt, :p1]]
  • def run(*p1) => [[:rest, :p1]]
  • def run(&p1) => [[:block, :p1]]
  • def run(p1:) => [[:key, :p1]]
  • def run(p1: nil) => [[:keyopt, :p1]]
  • def run(**p1) => [[:keyrest, :p1]]