Re: RFC 161 (v2) OO Integration/Migration Path
[email protected] (Dan Sugalski)
| Newsgroups | perl.perl6.language.objects |
|---|---|
| Message-ID | <[email protected]> |
At 11:28 AM 8/28/00 -0700, Steve Fink wrote: >Dan Sugalski wrote: > > > > If the vtable stuff goes into the core perl engine (and it probably will, > > barring performance issues), then what could happen in the > > > > my Foo $bar; > > > > case would be that all the vtable functions for Foo are taken as specially > > named subs/methods in the Foo package. So, for example, if you did: > > > > print $bar; > > > > then the core would vector through Foo's STRINGIFY sub, or if you did a: > > > > $baz = $bar + 12; > > > > the core would call Foo's ADD sub. > >But this shouldn't necessarily be Foo::ADD, right? > >my Foo $foo = BlueFoo->new(); >print $foo + 3; > >should call BlueFoo::ADD, not Foo::ADD, no? Yes. (Assuming BlueFoo->new returns a variable blessed into BlueFoo, of course) Presumably each package will have a prebuilt vtable attached to it that gets smacked into any variable marked as blessed into it. > (where BlueFoo isa Foo). But >if so, then it seems like my Foo $x and my Bar $x are equivalent -- both >of them just mean "use my actual class to look up vtable methods", maybe >with some type checking to ensure that only subclasses of the declared >class are put into $x. More or less, yep. It'll get funkier for builtin types, I think--if you do: my int %somehash; then stick a non-int into a hash entry, %somehash will probably get promoted to a full scalar hash rather than an int one. >But then what does my $x = BlueFoo->new(); print >"$x" do, assuming there is a BlueFoo::STRINGIFY? Print >"BlueFoo=HASH(0x0b38134)"? That's a good question. Not my call--that's language design. (Says the man neatly ducking the issue... :) >As for non-vtable methods, were you planning on making > >my Foo $foo; $foo->method_not_in_Foo_package(); > >a compile-time error? Also a language issue. There are AUTOLOAD things to take into account, amongst other things. Dan --------------------------------------"it's like this"------------------- Dan Sugalski even samurai [email protected] have teddy bears and even teddy bears get drunk