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 :

Question sur l'opérateur ::


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de johnkro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 276
    Par défaut Question sur l'opérateur ::
    Salut tout le monde,

    je ne comprends pas cette ligne :

    Comment peut-on avoir une variable avant l'opérateur :: ? Ce n'est pas censé être une classe? et de même pour après l'opérateur, CONFIG n'est ni une variable, ni une méthode !!!

    Je précise que le code marche, je le reprends pour l'améliorer, donc j'apprends le PERL... Je précise aussi qu'il y a un package Collector.pm sans constructeur.

    Merci pour vos lanternes, et si vous avez une bonne adresse pour expliquer l'opérateur ::n, je suis preneur.

  2. #2
    Membre éclairé Avatar de johnkro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 276
    Par défaut
    Quelques précisions, j'ai compris le CONFIG placé après l'opérateur ::, c'est un tableau de hash déclaré dans le package en fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Collector::CONFIG{$_} = $Collector::allowed_options{$_}{default};
    ce que je ne comprends toujours pas, c'est $Collector placé avant......

  3. #3
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    %Collector::CONFIG est la variable %CONFIG du package (espace de nom) Collector. :: n'est pas un opérateur mais un séparateur d'espace de nom.

    Lorsque tu es dans le package où %CONFIG est déclaré, tu peux l'appeler simplement %CONFIG mais depuis l'extérieur il faut le qualifier, c'est à dire préciser à quel package il appartient.

    --
    Jedaï

  4. #4
    Membre éclairé Avatar de johnkro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 276
    Par défaut
    Ah ok d'accord. Ca revient un peu à faire %toto=Collector::CONFIG, et après je peux utiliser %toto comme je veux?

    Merci!

  5. #5
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Non, d'une part cette ligne est incorrecte (il manque le sigil devant Collector::CONFIG), d'autre part, %toto est une copie de %CONFIG, pas un alias, donc les modifications faites sur %toto ne seront pas répercutés sur %CONFIG et s'il y a des fonctions du package Collector qui consultent %CONFIG, elles n'auront pas accès aux modifications sur %toto.

    Si tu veux faire des alias comme ça, la meilleure solution c'est de faire en sorte que Collector exporte %CONFIG.

    --
    Jedaï

  6. #6
    Membre éclairé Avatar de johnkro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 276
    Par défaut
    ok ok pour ce que tu as dit ci-dessus.

    Par contre, je me suis fais un petit test et ça ne marche pas...

    Dans mon package, j'ai déclaré un tableau de hash :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %Collector::allowed_options = {"collector.port" => 516};
    dans mon .pl, j'appelle la valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use Scheduler;
    print $Collector::CONFIG{"collector.port"};
    ça me retourne une ligne vide...



    Autre question : pourquoi dans le package, le tableau est déclaré de la sorte, c'est pour "dire" que c'est un hash exporté?

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

Discussions similaires

  1. Question Sur l'Opérateur d'affichage C++ <<
    Par chercheur111 dans le forum C++
    Réponses: 24
    Dernier message: 19/04/2014, 21h28
  2. question sur la surcharge d'opérateur ++
    Par deubelte dans le forum Débuter
    Réponses: 13
    Dernier message: 26/04/2010, 18h28
  3. question sur l'opérateur new
    Par deubelte dans le forum Débuter
    Réponses: 54
    Dernier message: 29/03/2010, 10h47
  4. Questions sur l'opérateur <<
    Par coyotte507 dans le forum C++
    Réponses: 4
    Dernier message: 18/11/2007, 22h54
  5. question sur les opérateurs
    Par isidore dans le forum C++
    Réponses: 10
    Dernier message: 25/02/2005, 18h46

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