5
私は配列変数にリストを入れて、別の配列変数にそれを複製する場合は、両者が区別される:Perl 6アレイのクローンはいつクローンではありませんか?
my @original = 1, 3, 7;
my @clone = @original.clone;
@original[*-1] = 'Dog';
say "original is finally <@original[]> ({@original.^name})";
say "clone is finally <@clone[]> ({@clone.^name})";
出力は、彼らがお互いに影響を与えないことを示しています
original is finally <1 3 Dog> (Array)
clone is finally <1 3 7> (Array)
しかし、配列をスカラー変数に入れた場合、クローンは2つの独立した変数を保持しません。 1を変更すると、他の変更:
my $original = [ 1, 3, 7 ];
say "original is <$original[]> ({$original.^name}) with {$original.elems} values";
my $clone = $original.clone;
say "clone is <$clone[]> ({$clone.^name}) with {$clone.elems} values";
if $original eqv $clone {
say "The original and clone have the same values!";
}
if $original === $clone {
say "The original and clone are the same object!";
}
if $original =:= $clone {
say "The original and clone are the same container!";
}
$original[*-1] = 'Dog';
say "original is finally <$original[]> ({$original.^name}) with {$original.elems} values";
say "clone is finally <$clone[]> ({$clone.^name}) with {$clone.elems} values";
出力は、オリジナルとクローンがまだリンクされていることを示しているが、不思議なことに、彼らは同じオブジェクトまたはコンテナではありません。
はoriginal is <1 3 7> (Array) with 3 values
clone is <1 3 7> (Array) with 3 values
The original and clone have the same values!
original is finally <1 3 Dog> (Array) with 3 values
clone is finally <1 3 Dog> (Array) with 3 values
この1つは、どこ作品
my $original = [ 1, 3, 7 ];
my @clone = $original.clone;
$original[*-1] = 'Dog';
say "original is finally <$original[]> ({$original.^name})";
say "clone is finally <@clone[]> ({@clone.^name})";
しかし、元の配列で、クローンをスカラー変数に代入されたとき、それは動作しません:クローンを配列変数に割り当てられている
my @original = 1, 3, 7;
my $clone = @original.clone;
@original[*-1] = 'Dog';
say "original is finally <@original[]> ({@original.^name})";
say "clone is finally <$clone[]> ({$clone.^name})";
これはRakudo 2017.01です。
これは不具合で、Rakudo '2017.02'で修正されました。 Rakudo 2017.01以前では、 'Array'クラスには独自の' clone'メソッドがないため、 '$ a.clone'を呼び出すと実際には' Mu.clone'が呼び出されます。 – cuonglm
これにはチケットがありますか?私はRTを見て、見つけませんでした。 –
ここはhttps://rt.perl.org/Public/Bug/Display.html?id=129762です – cuonglm