IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

$_ dans une routine de class


Sujet :

Langage Perl

  1. #1
    Membre régulier Avatar de foolib
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 111
    Points : 90
    Points
    90
    Par défaut $_ dans une routine de class
    Boujour/bonsoir,

    j'ai besoin d'un petit éclaircissement dans une 'methode' de class :
    Soit le package suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    package Person;
     
    use warnings;
    use strict;
     
    sub new{
    	my $class = shift;
    	my $self = {@_};
    	bless ($self, $class);
    	return $self;
    }
     
    sub adress { $_[0]->{adress}=$_[1] ifdefined $_[1]; $_[0]->{adress} }
     
    1;
    Je sais que le premier paramètre passé à une méthode d'instance est la référence vers l'objet ( hash interne en l'occurence ).

    Dans la methode "adress" sensée servir de getter/setter, que désigne $_ ?

    S'agit il d'une référence sur l'Array correspondant aux paramètres ? En réalité je ne saisi pas la notation. Pourquoi n'est-ce pas @_ qui est employé ?

    Merci d'avance

  2. #2
    Membre du Club
    Femme Profil pro
    Ingénieur d'études
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    Bonsoir.

    En fait la variable $_ représente la valeur courante. Pour le @_ il s'agit du tableau courant.
    Donc, en fin de compte, lorsque l'on voit $_[0], il s'agit de la première case du tableau courant qui est passé en paramètre de la méthode 'adress' !

    Est-ce plus clair ?

  3. #3
    Membre régulier Avatar de foolib
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 111
    Points : 90
    Points
    90
    Par défaut
    Quand j'éxécute la méthode...
    j'obtiens
    Bareword found where operator expected at Person.pm line 23, near "] ifdefined"
    (Missing operator before ifdefined?)
    syntax error at Person.pm line 23, near "] ifdefined "
    Compilation failed in require at test.pl line 13.
    BEGIN failed--compilation aborted at test.pl line 13.

  4. #4
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 184
    Points : 322
    Points
    322

  5. #5
    Membre régulier Avatar de foolib
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 111
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par Dimitry.e Voir le message
    Dans la série j'ai pas les yeux en face des trous ... :p

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Pourquoi ne pas écrire un code perl propre et surtout lisible en choisissant des noms de variables claires et simples.
    C'est bien de vouloir écrire du code en peu de lignes, mais on perd toujours en temps de maintenance, de lisibilité et d'efficacité.

  7. #7
    Membre régulier Avatar de foolib
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 111
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par djibril Voir le message
    Pourquoi ne pas écrire un code perl propre et surtout lisible en choisissant des noms de variables claires et simples.
    C'est bien de vouloir écrire du code en peu de lignes, mais on perd toujours en temps de maintenance, de lisibilité et d'efficacité.
    Je suis d'accord à 101% ...
    Le fait est que j'apprends le perl et dans le livre que je lis il y a cet exemple un peu de côté : J'aime bien comprendre pour ne pas risquer d'être suppris en voyant certaines pratiques.

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Voici une documentation sur perl et la programmation objet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 13/09/2006, 09h13
  2. Réponses: 2
    Dernier message: 25/08/2006, 22h18
  3. Réponses: 11
    Dernier message: 12/08/2006, 10h22
  4. [POO] Tableau d'objets B dans une instance de class A
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 24/05/2006, 09h52
  5. execution de blt dans une methode de classe
    Par micflor dans le forum DirectX
    Réponses: 2
    Dernier message: 13/03/2006, 20h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo