in reply to Re^3: use fields; # damnit
in thread use fields; # damnit
That's the code you're responsible for. Lets say the accessor for 'intelligence' had a typo, and accessed the field 'inteligence'. Without using fields and typed variable declarations, you would not get any erros.package Dog; use fields qw/intelligence/ sub new { my $pkg = shift; my Dog $self = $pkg->fields::new(); $self->{intelligence} = shift; $self; } sub intelligence { my Dog $self = shift; $self->{intelligence}; }
This won't compile, and is broken:
sub intelligence { my Dog $self = shift; $self->{inteligence}; # typo }
And normally people would write
and the code would compile correctly, but is just as broken.sub intelligence { my $self = shift; $self->{inteligence}; # typo }
useing fields is meant to help you write your classes a bit cleaner, and is a bit like trying to catch typos in variable names. Just using $foo wouldn't work normally if there's no such variable, yet perl will only complain with use strict. Using a variable to store the intelligence value, $intelligence, and typoing it the next time around to $inteligence is the best analogy I can find for getting your field names wrong, and that's where use fields; helps.
|
|---|