Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: How to sub class-es

by perlfan (Vicar)
on May 19, 2020 at 08:34 UTC ( [id://11116931]=note: print w/replies, xml ) Need Help??


in reply to How to sub class-es

Check out Conway's Object Oriented Perl. And for God's sake I hope you never find the time to learn Moose or Moo.
package Robo; use strict; use warnings; sub new { bless { Arm => Robo::Arm->new(), # 'Arm' points to instance of Robo +::Arm Feet => Robo::Feet->new(), #'Feet' points to instance of Rob +o::Feet }, shift } 1; package main; my $robo = Robo->new(); $robo->{Feet}->walk(); $robo->{Arm}->pick( "Apple" );
If you want to have walk and pick methods attached to Robo instances, then you have to create these as subroutines in package Robo.
sub walk { my $self = shift; $self->{Feet}->walk(); return; } sub pick { my ($self, $thing) = @_; return $self->{Arm}->pick( $thing ); }
Maybe that's what you're trying to do with AUTOLOAD, but my advice is to do it manually before you start trying to fold in methods from member classes using AUTOLOAD.

Also, new X is not idiomatic and I am surprised still works in some cases. Do X->new(..) and don't look back.

Replies are listed 'Best First'.
Re^2: How to sub class-es
by JediMasterT (Sexton) on May 21, 2020 at 12:02 UTC
    ++ for the simplicity of this answer. It answers the question at hand without going too much further. I wouldn't recommend this if you're trying to abstract out the robot's specific loadout (i.e. if you want to be able to use a robot instance without having to know if it has arms) but that's not what the question asked.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11116931]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2024-04-18 12:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found