私のオブジェクトコンストラクターには、2つの属性を同時に初期化するステートメントがありました。
($self->{token}, $self->{token_start}) = $self->_get_authorized_token();
だから私はトークンを手に入れました、そしてそれは1つのステートメントで一緒に始まります。
ここで、Moo(se)を使用するようにモジュールを移植しようとしましたが、これら2つのバインドされた属性を同時に設定する方法がわかりません。いくつかの擬似コードは次のようになります。
has qw/token token_start/ => (
is => 'rw',
default => shift->_get_authorized_token();
);
しかし、Moo(se)ishの方法で2つのバインドされた属性を宣言するにはどうすればよいですか?
編集。私はメソッドのコードを示します_get_authorized_token
、多分それはいくつかのアイデアをもたらすでしょう:
sub _get_authorized_token {
my $self = shift;
my $postData = { 'apikey' => $self->{key} };
my $url = $self->{base_url} . '/seller';
my $xml = $self->_post(url => $url,
postdata => $postData,
);
my $ref = XMLin($xml, SuppressEmpty => '' );
my $time = $ref->{Notification_Datetime};
my $token = $ref->{Notification_Data}{body}{token};
return ($token, $time);
}