Thread Dereferenzierung klappt nicht
(14 answers)
Opened by bianca at 2022-02-06 09:40
Man muss sich beide Datenstrukturen (Original und Kopie) ausgeben lassen und dann die Ausgaben vergleichen.
Wenn nur die Kopie geändert wurde, und im Original die gleiche Änderungen sichtbar werden, dann kann es keine "saubere", tiefe Kopie gewesen sein. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #! /usr/bin/env perl use strict; use warnings; use 5.020; use Data::Dumper; use Storable qw( dclone ); sub _dump { my ( $name, $object ) = @_; say Data::Dumper->new( [ $object ], [ "*$name" ], )->Sortkeys(1) ->Useqq(1) ->Dump(); } my $original = { sub1 => { sub2 => { foo => 'bar' }, }, }; my $tiefe_kopie = dclone($original); my $einfache_kopie = {}; %$einfache_kopie = %$original; $tiefe_kopie->{sub1}{sub2}{foo} = "neu"; say "# Vergleich nach Änderung Tiefe Kopie"; _dump( 'Original' => $original ); _dump( 'Tiefe_Kopie' => $tiefe_kopie ); $einfache_kopie->{sub1}{sub2}{foo} = "hier stand mal bar"; say "# Vergleich nach Änderung einfache Kopie"; _dump( 'Original' => $original ); _dump( 'Einfache_Kopie' => $einfache_kopie ); Code: (dl
)
1 # Vergleich nach Änderung Tiefe Kopie meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |