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 № 1User.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]]