我一直在尝试在perltoot中描述的对象内部创建一个闭包.我已经完全复制了它,甚至复制和粘贴它,但我仍然能够以通常的方式访问该对象,$obj->('NAME').我正盯着失去耐心!
我是误会了什么?我多年来一直在使用perl进行个人项目,并且刚刚开始掌握课程和OOP.
package Person;
sub new {
my $that = shift;
my $class = ref($that) || $that;
my $self = {
NAME => undef,
AGE => undef,
PEERS => [],
};
my $closure = sub {
my $field = shift;
if (@_) { $self->{$field} = shift }
return $self->{$field};
};
bless($closure, $class);
return $closure;
}
sub name { &{ $_[0] }("NAME", @_[ 1 .. $#_ ] ) }
sub age { &{ $_[0] }("AGE", @_[ 1 …Run Code Online (Sandbox Code Playgroud) perl ×1