Skip to content

Instantly share code, notes, and snippets.

@rjbs
Last active March 8, 2020 04:13
Show Gist options
  • Select an option

  • Save rjbs/bb1c0486efc19b54f12b69ae368233cb to your computer and use it in GitHub Desktop.

Select an option

Save rjbs/bb1c0486efc19b54f12b69ae368233cb to your computer and use it in GitHub Desktop.
use v5.20.0;
package CliM8::LoopControl::Continue {
use Moo;
sub throw { die $_[0]; }
no Moo;
}
package CliM8::LoopControl::Pop {
use Moo;
extends 'CliM8::LoopControl::Continue';
no Moo;
}
package CliM8::LoopControl::Push {
use Moo;
extends 'CliM8::LoopControl::Continue';
has activity => (is => 'ro', required => 1);
no Moo;
}
package CliM8::LoopControl::Swap {
use Moo;
extends 'CliM8::LoopControl::Pop', 'CliM8::LoopControl::Push';
no Moo;
}
my $push = CliM8::LoopControl::Push->new({ activity => 1 });
my $swap = CliM8::LoopControl::Swap->new({ activity => 1 });
# To my surprise, $swap->{activity} is not present.
use Data::Dumper;
warn Dumper($push);
warn Dumper($swap);
@notbrokenjemma
Copy link
Copy Markdown

notbrokenjemma commented Mar 8, 2020

use v5.30.0;

package CliM8::LoopControl::Pop {
  use Moo;
  has activity2 => (is => 'ro', required => 1);
}

package CliM8::LoopControl::Push {
  use Moo;
  has activity => (is => 'ro', required => 1);
}

package CliM8::LoopControl::Swap {
  use Moo;
  extends  'CliM8::LoopControl::Push', 'CliM8::LoopControl::Pop';
}

my $swap = CliM8::LoopControl::Swap->new({ activity => 1, activity2 => 2 });

use Data::Dumper;
warn Dumper($swap);

# It's only inheriting from the last extend

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment