On Mon, May 16, 2005 at 02:59:11PM +0000, Ingo Blechschmidt wrote: : Hi, : : class Foo { : submethod BUILD() { : say 42; : } : } : : class Bar is Foo { : submethod BUILD() { : say 23; : } : } : : my Bar $bar .= new; : : I suppose this will output: : 42 : 23 : : 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?
Yes. : 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? Correct. : class A { submethod blarb() { say 42 } } : class B is A { submethod blarb() { say 23 } } : B.new.blarb; : : 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 "B.new.A::blarb", correct?) Yes. Larry