in reply to Re2: OO: Leaving a constructor midway?
in thread OO: Leaving a constructor midway?
All four subs return a blessed object. Do you call all of them constructors? Would you call an accessor method that happens to return an object (instead of say a string or a number) a constructor? After all, the returned value is something that "looks, talks, and walks like an object." Client code doesn't know what's going on under the hood.my $snickle = CGI -> new; package Gonbagger; sub one {bless [] => "Fumble"} sub two {one} sub three {two} sub four {$snickle}
Java and Ruby have methods that are constructors. They are special, in the sense that they are called implicitely, and can't/shouldn't be called directly. Unlike Perl's class methods that just happen to return an object.
What if I write my class like this:
Are both methods constructors?package Lioger; use Exporter (); @Lioger::EXPORT = qw /lioger1/; @Lioger::ISA = qw /Exporter/; sub lioger1 { return if @_; my $x = bless [] => __PACKAGE__; $x [0] = $x; } sub lioger2 { ${$_ [0]} [0] }
Language like Java, Ruby and C++ don't call just any function that happens to return an object a "constructor".
Abigail
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Leaving a constructor midway?
by dragonchild (Archbishop) on Oct 22, 2003 at 14:44 UTC | |
by Abigail-II (Bishop) on Oct 22, 2003 at 15:38 UTC | |
by oylee (Pilgrim) on Oct 22, 2003 at 16:32 UTC |