Guest User

Weird .clone behaviour

a guest
Apr 17th, 2017
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 6 0.60 KB | None | 0 0
  1. class Mut {
  2.     has @.a;
  3.     method push($th) {
  4.         push @.a, $th;
  5.     }
  6. }
  7.  
  8. class G {
  9.     has Mut $.old;
  10.     method dont_change_old {
  11.         my $new = $.old.clone;
  12.         $new.push(3);
  13.         say "New: {$new.perl}";
  14.         say "Old: {$.old.perl}";
  15.     }
  16. }
  17.  
  18. my $g = G.new(old => Mut.new);
  19. $g.dont_change_old;
  20. $g.dont_change_old;
  21. $g.dont_change_old;
  22.  
  23. # OUTPUT:
  24. # New: Mut.new(a => [3])
  25. # Old: Mut.new(a => [])
  26. # New: Mut.new(a => [3])
  27. # Old: Mut.new(a => [3])
  28. # New: Mut.new(a => [3, 3])
  29. # Old: Mut.new(a => [3, 3])
  30. #
  31. # VERSION:
  32. # This is Rakudo version 2017.01 built on MoarVM version 2017.01
  33. # implementing Perl 6.c.
Advertisement
Add Comment
Please, Sign In to add comment