develooper Front page | perl.perl6.language | Postings from May 2005

BUILD and other submethods

Thread Next
Ingo Blechschmidt
May 16, 2005 08:02
BUILD and other submethods
Message ID:
  class Foo { 
    submethod BUILD() { 
      say 42; 
  class Bar is Foo { 
    submethod BUILD() { 
      say 23; 
  my Bar $bar .= new; 
I suppose this will output: 
S12 says that "submethod[s] [are] called only when a method call is 
dispatched directly to the current class", but the default implementation of 
"new" (as given by Object), calls BUILDALL, which in turn calls all BUILDs, so 
I think both BUILDs are executed. Are they? 
S12 says that "[s]ubmethods are for declaring infrastructural methods that 
shouldn't be inherited by subclasses". I read this "shouldn't be inherited" as 
that a submethod definition of the same name in a subclass does not 
overwrite/substitute the definition of the parent class. Correct? 
  class A      { submethod blarb() { say 42 } } 
  class B is A { submethod blarb() { say 23 } }; 
Does this only output "23"? (I think so, as I don't call A::blarb explicitly. 
If I wanted to call A's blarb, I'd have to say "", correct?) 
Linux, the choice of a GNU | self-reference, n. - See self-reference   
generation on a dual AMD   |  
Athlon!                    |  

Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About