On Mar 25, 2015, at 7:44 AM, Tom Browder <tom.brow...@gmail.com> wrote:
—snip--
> 1. How can I indirectly refer to the attributes in a method?  The
> above doesn't work (with or without the '()’).

—snip—

use v6;
our %attrs = (
   age => 1,
   # wgt => 2, # Need to handle "No such method" before uncommenting.
);
class foo {
   # has $.age = rw;
   has $.age;

   method all_attrs {
       my @ordered_attrs = %attrs.sort({ + .value }).map({ .key });
       for @ordered_attrs -> $k {
           my $aval = self."$k"();  # supposed to work for a method name
           say "attr { $k } has value '{ $aval }'";
       }
   }

}

my $f = foo.new( age => 30 );
# say $f.perl;
$f.all_attrs();

My modified version of your code (above) works for me. Output is:
   attr age has value '30'

Note that your line "has $.age = rw" was invalid syntax,
and your "a" method was *outside* your original "foo" class.

— 
Hope this helps,
Bruce Gray (Util of PerlMonks)

Reply via email to