📄 mro.3
字号:
.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05).\".\" Standard preamble:.\" ========================================================================.de Sh \" Subsection heading.br.if t .Sp.ne 5.PP\fB\\$1\fR.PP...de Sp \" Vertical space (when we can't use .PP).if t .sp .5v.if n .sp...de Vb \" Begin verbatim text.ft CW.nf.ne \\$1...de Ve \" End verbatim text.ft R.fi...\" Set up some character translations and predefined strings. \*(-- will.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left.\" double quote, and \*(R" will give a right double quote. \*(C+ will.\" give a nicer C++. Capital omega is used to do unbreakable dashes and.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,.\" nothing in troff, for use with C<>..tr \(*W-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'.ie n \{\. ds -- \(*W-. ds PI pi. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch. ds L" "". ds R" "". ds C` "". ds C' ""'br\}.el\{\. ds -- \|\(em\|. ds PI \(*p. ds L" ``. ds R" '''br\}.\".\" Escape single quotes in literal strings from groff's Unicode transform..ie \n(.g .ds Aq \(aq.el .ds Aq '.\".\" If the F register is turned on, we'll generate index entries on stderr for.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index.\" entries marked with X<> in POD. Of course, you'll have to process the.\" output yourself in some meaningful fashion..ie \nF \{\. de IX. tm Index:\\$1\t\\n%\t"\\$2"... nr % 0. rr F.\}.el \{\. de IX...\}.\".\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2)..\" Fear. Run. Save yourself. No user-serviceable parts.. \" fudge factors for nroff and troff.if n \{\. ds #H 0. ds #V .8m. ds #F .3m. ds #[ \f1. ds #] \fP.\}.if t \{\. ds #H ((1u-(\\\\n(.fu%2u))*.13m). ds #V .6m. ds #F 0. ds #[ \&. ds #] \&.\}. \" simple accents for nroff and troff.if n \{\. ds ' \&. ds ` \&. ds ^ \&. ds , \&. ds ~ ~. ds /.\}.if t \{\. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u". ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'.\}. \" troff and (daisy-wheel) nroff accents.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'.ds 8 \h'\*(#H'\(*b\h'-\*(#H'.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#].ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#].ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#].ds ae a\h'-(\w'a'u*4/10)'e.ds Ae A\h'-(\w'A'u*4/10)'E. \" corrections for vroff.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'. \" for low resolution devices (crt and lpr).if \n(.H>23 .if \n(.V>19 \\{\. ds : e. ds 8 ss. ds o a. ds d- d\h'-1'\(ga. ds D- D\h'-1'\(hy. ds th \o'bp'. ds Th \o'LP'. ds ae ae. ds Ae AE.\}.rm #[ #] #H #V #F C.\" ========================================================================.\".IX Title "mro 3".TH mro 3 "2007-12-18" "perl v5.10.0" "Perl Programmers Reference Guide".\" For nroff, turn off justification. Always turn off hyphenation; it makes.\" way too many mistakes in technical documents..if n .ad l.nh.SH "NAME"mro \- Method Resolution Order.SH "SYNOPSIS".IX Header "SYNOPSIS".Vb 1\& use mro; # enables next::method and friends globally\&\& use mro \*(Aqdfs\*(Aq; # enable DFS MRO for this class (Perl default)\& use mro \*(Aqc3\*(Aq; # enable C3 MRO for this class.Ve.SH "DESCRIPTION".IX Header "DESCRIPTION"The \*(L"mro\*(R" namespace provides several utilities for dealingwith method resolution order and method caching in general..PPThese interfaces are only available in Perl 5.9.5 and higher.See MRO::Compat on \s-1CPAN\s0 for a mostly forwards compatibleimplementation for older Perls..SH "OVERVIEW".IX Header "OVERVIEW"It's possible to change the \s-1MRO\s0 of a given class either by using \f(CW\*(C`usemro\*(C'\fR as shown in the synopsis, or by using the \*(L"mro::set_mro\*(R" functionbelow. The functions in the mro namespace do not require loading the\&\f(CW\*(C`mro\*(C'\fR module, as they are actually provided by the core perl interpreter..PPThe special methods \f(CW\*(C`next::method\*(C'\fR, \f(CW\*(C`next::can\*(C'\fR, and\&\f(CW\*(C`maybe::next::method\*(C'\fR are not available until this \f(CW\*(C`mro\*(C'\fR modulehas been loaded via \f(CW\*(C`use\*(C'\fR or \f(CW\*(C`require\*(C'\fR..SH "The C3 MRO".IX Header "The C3 MRO"In addition to the traditional Perl default \s-1MRO\s0 (depth firstsearch, called \f(CW\*(C`DFS\*(C'\fR here), Perl now offers the C3 \s-1MRO\s0 aswell. Perl's support for C3 is based on the work done inStevan Little's module Class::C3, and most of the C3\-relateddocumentation here is ripped directly from there..Sh "What is C3?".IX Subsection "What is C3?"C3 is the name of an algorithm which aims to provide a sane methodresolution order under multiple inheritance. It was first introduced inthe language Dylan (see links in the \*(L"\s-1SEE\s0 \s-1ALSO\s0\*(R" section), and thenlater adopted as the preferred \s-1MRO\s0 (Method Resolution Order) for thenew-style classes in Python 2.3. Most recently it has been adopted as the\&\*(L"canonical\*(R" \s-1MRO\s0 for Perl 6 classes, and the default \s-1MRO\s0 for Parrot objectsas well..Sh "How does C3 work".IX Subsection "How does C3 work"C3 works by always preserving local precendence ordering. This essentiallymeans that no class will appear before any of its subclasses. Take, forinstance, the classic diamond inheritance pattern:.PP.Vb 5\& <A>\& / \e\& <B> <C>\& \e /\& <D>.Ve.PPThe standard Perl 5 \s-1MRO\s0 would be (D, B, A, C). The result being that \fBA\fRappears before \fBC\fR, even though \fBC\fR is the subclass of \fBA\fR. The C3 \s-1MRO\s0algorithm however, produces the following order: (D, B, C, A), which doesnot have this issue..PPThis example is fairly trivial; for more complex cases and a deeperexplanation, see the links in the \*(L"\s-1SEE\s0 \s-1ALSO\s0\*(R" section..SH "Functions".IX Header "Functions".ie n .Sh "mro::get_linear_isa($classname[, $type])".el .Sh "mro::get_linear_isa($classname[, \f(CW$type\fP])".IX Subsection "mro::get_linear_isa($classname[, $type])"Returns an arrayref which is the linearized \s-1MRO\s0 of the given class.Uses whichever \s-1MRO\s0 is currently in effect for that class by default,or the given \s-1MRO\s0 (either \f(CW\*(C`c3\*(C'\fR or \f(CW\*(C`dfs\*(C'\fR if specified as \f(CW$type\fR)..PPThe linearized \s-1MRO\s0 of a class is an ordered array of all of theclasses one would search when resolving a method on that class,starting with the class itself..PPIf the requested class doesn't yet exist, this function will stillsucceed, and return \f(CW\*(C`[ $classname ]\*(C'\fR.PPNote that \f(CW\*(C`UNIVERSAL\*(C'\fR (and any members of \f(CW\*(C`UNIVERSAL\*(C'\fR's \s-1MRO\s0) are notpart of the \s-1MRO\s0 of a class, even though all classes implicitly inherit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -