Skip to content

Instantly share code, notes, and snippets.

@klopp
Last active March 26, 2018 13:50
Show Gist options
  • Select an option

  • Save klopp/e290b01571132f5014ba15b989bd2d52 to your computer and use it in GitHub Desktop.

Select an option

Save klopp/e290b01571132f5014ba15b989bd2d52 to your computer and use it in GitHub Desktop.
package AA;
sub func { print "AA\n" }
package BB;
use parent 'AA';
sub func { print "BB\n"; shift->SUPER::func(@_); }
package CC;
use parent 'AA'
sub func { print "CC\n"; shift->SUPER::func(@_); }
package DD;
use parent qw/BB CC/;
sub func { print "DD\n"; shift->SUPER::func(@_); }
#
# В каких классах и в каком порядке будут вызваны функции func, если вызвать DD->func ?
#
# DD, BB, AA
#
# По какому принципу мы должны построить наследование, если нам необходимо,
# чтобы при вызове DD->func, были вызваны функции по всех этих классах, и
# не меняя иерархию наследования?
#
# См. mro. И вместо
#
# shift->SUPER::func(@_)
#
# вызывать
#
# shift->next::method(@_);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment