$ perl6 > say join ', ', Rat.^attributes $!numerator, $!denominator > # , > # > say join ', ', Rat.^methods(:local).pick(5) unpolar, ceiling, reals, Str, round > say Rat.^methods(:local).grep('log').[0].signature.perl :(Numeric $x: Numeric $base = { ... };; *%_)
sub log-calls($obj, Role $r) { my $wrapper = RoleHOW.new; for $r.^methods -> $m { $wrapper.^add_method($m.name, method (|$c) { # # note() standard error note ">> $m"; # # nextsame; }); } $wrapper.^compose(); # 'does' , 'but', # $obj does $wrapper; } role Greet { method greet($x) { say "hello, $x"; } } class SomeGreeter does Greet { method LOLGREET($x) { say "OH HAI "~ uc $x; } } my $o = log-calls(SomeGreeter.new, Greet); # log, Greet $o.greet('you'); # log, $o.LOLGREET('u');
>> greet hello, you OH HAI U
Source: https://habr.com/ru/post/265199/
All Articles