Perl:如何增加Class :: Struct字段?

sds*_*sds 1 perl class

如何增加Class::Struct对象中的字段?

现在我被困住了

use Class::Struct foo => [
  counter => '$',
];
my $bar = foo->new(counter => 5);
$bar->counter($bar->counter()+1);
Run Code Online (Sandbox Code Playgroud)

我想知道是否有比最后一行更具表现力的东西(显而易见的$bar->counter++结果Can't modify non-lvalue subroutine call).

编辑:当然,我对$bar->[0]++et al 不感兴趣- 如果我之前添加一个字段counter怎么办?我不想为所有这些"等待中的错误"搜索我的代码.

Sin*_*nür 6

您可以添加increment方法foo:

#!/usr/bin/env perl

package foo;

use strict; use warnings;

sub increment_counter {
    my $self = shift;
    my $val = $self->counter + 1;
    $self->counter($val);
    return $val;
}

package main;

use 5.012;
use strict;
use warnings;

use Class::Struct foo => [
  counter => '$',
];

my $bar = foo->new(counter => 5);

$bar->increment_counter;

say $bar->counter;

__END__
Run Code Online (Sandbox Code Playgroud)