Class::ISA et généalogie ascendante

Tu as oublié qu'il faut préférer la composition à l'héritage?

et du coup tu sais plus trop qui hérite de quoi ? Class::ISA permet de faire de la généalogie en perl :

# Une classe mère
package Maman;
 
sub one { 1 }
 
# dont hérite une autre classe
package Chiard; use base 'Maman';
 
sub new { bless {}, shift }
 
package main;
 
use strict;
use warnings;
use Class::ISA;
 
# création d'un chiard
my $x = new Chiard;
my $ref = ref $x;
 
# Généalogie ascendante
print "$_\n" for $ref, Class::ISA::super_path( $ref );

bazooka, tuer la mouche, tout ca ...

en y réfléchissant 2 secondes, je me demande si ca justifiait un paquet:

#! /usr/local/bin/perl -l
 
# classes
# A avec un constructeur
package A;
sub new { bless {},shift }
# B herite de A ( donc B::ISA = qw<A> )
package B; use base 'A';
 
package main;
use strict;
use warnings;
 
my $b = new B;
 
sub genealogy {
    print;
    # utilisation de référence symbolique pour chercher le tableau @B::ISA
    no strict 'refs';
    &genealogy for @{"${_}::ISA"};
    use strict 'refs';
}
 
$_ =  ref $b;
&genealogy;

>Ever heard of .cshrc?
That's a city in Bosnia. Right?

c'est toi t'es une astuce pour le proxy microsoft!

C'est même Hervé et toi qui essayez de me refourger un AD en lieu et place de solutions libres ! (je cafte au cas ou des potes a toi nous liraient)

ISA est a lire en 2 bouts : IS A

comme dans "Fabien IS A geek"

J'espère que tu passes de bonnes fêtes!

marc

>Ever heard of .cshrc?
That's a city in Bosnia. Right?

Ouf

En voyant ISA, j'ai cru que c'etait une astuce pour le proxy de Microsoft ;)

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement.
  • You can use BBCode tags in the text.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

Plus d'informations sur les options de formatage