"Returns a list of public methods available on the class (which includes 
methods from superclasses and roles). By default this stops at the classes 
Cool, Any or Mu; to really get all methods, use the :all adverb. If :local is 
set, only methods declared directly in the class are returned."
https://docs.perl6.org/routine/methods

On 2018-07-31 06:56:07 +0430, Joseph Brenner wrote:
> I originally thought that $var.^methods gave you a list of all
> available methods on $var, but it looks like it doesn't (always?)
> report on inherited methods.
>
> my $stringy = '3.14159';
> say $stringy.^name;
>   # Str
> say $stringy.^mro;
>   # ((Str) (Cool) (Any) (Mu))
>
> The list returned from checking $stringy is the same as just
> checking (Str):
>
>   $stringy.^methods
>   (Str).^methods
>
> And it includes none of the (Cool) methods:
>
>   (Cool).^methods
>
> For example, trig functions like "cos" are part of the (Cool)
> list, but are not in the $stringy.^methods list, though you can
> call clearly them:
>
>   say $stringy.cos
>   -0.9999999999964793
>
> I guess this seems to work to give you the full list of available
> methods:
>
>   $stringy.^methods(:all)

Reply via email to