Task

The goal is to get the methods of an object, as names, values or both.

Some languages offer dynamic methods, which in general can only be inspected if a class' public API includes a way of listing them.

class Foo {
    method foo ($x)      { }
    method bar ($x, $y)  { }
    method baz ($x, $y?) { }
}
 
my $object = Foo.new;
 
for $object.^methods {
    say join ", ", .name, .arity, .count, .signature.gist
}