2

同じことを意味する 2 つのデータ構造がある場合、例:

$c->req->cookies->{app1} = $c->req->cookies->{general};
$c->req->cookies->{app2} = $c->req->cookies->{general};

私は書くことができます:

( $c->req->cookies->{app1}, $c->req->cookies->{app2} ) = $c->req->cookies->{general};

?

また、私は書くことができます:

   $c->req->cookies->{app1} =  $c->req->cookies->{app2 } = $c->req->cookies->{general};

?

4

2 に答える 2

7

2番目の形式が可能で、一部の人は頻繁に使用します

$x = $y = $z;

最初の形式は、必要なことを行いません。最初の変数に値を代入するだけです。

($x, $y) = $z;

右側にも 2 つのメンバー リストが必要です。

($x, $y) = ($z) x 2;

更新: あなたの場合、x関連するメソッドが両方の呼び出しに対して同じ値を返す場合にのみ演算子を使用できます。それ以外の場合は、使用できます

($x, $y) = map $obj->method, 1, 2;
于 2013-07-24T10:17:33.980 に答える
4

いつものように、それを行うには多くの方法があります。たとえば、ハッシュ スライスを使用することもできます。

@{ $c->req->cookies }{qw( app1 app2 )}

ただし、独創性の欠如をお勧めします。

my $cookies = $c->req->cookies;
my $general_cookie = $cookies->{general};
$cookies->{$_} = $general_cookie for qw(app1 app2);

これにより、コードが読みやすくなり、新しいデータ構造が作成されず、複雑な逆参照が可能な限り減少します。

于 2013-07-24T11:19:29.517 に答える