1

次のコードのように、Perl クロージャーを Moo アクセサーに変えようとしています。残念ながら、このコードは Moose では機能しますが、Moo では例外がスローされます。

Perl クロージャーによって定義された読み取りおよび書き込みアクセサーを使用して Moo コードを作成するのを手伝ってください (単純な値を読み取って保存するデフォルトのアクセサーではなく、私のクロージャーを呼び出す必要がある読み取りおよび書き込みアクセサー)。

#!/usr/bin/perl

package X;
use Moo;

my $BusinessClass = "X";
my $Key = 'zz';

no strict 'refs';
*{"${BusinessClass}::access_$Key"} = sub { "Modified $Key" };
has $Key => ( is        => 'rw',
              required  => 0,
              accessor  => { $Key => \&{"${BusinessClass}::access_$Key"} },
              # predicate => { "has_$Key",\&{"${BusinessClass}::access2_$Key"} },
            );

my $obj = X->new;
print $obj->zz, "\n";
4

1 に答える 1