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 :

Poo reference d'une methode a un objet stocker dans $this


Sujet :

Langage Perl

  1. #1
    Membre averti
    Avatar de magicshark
    Homme Profil pro
    Dans une SS2I donc pas que JAVA
    Inscrit en
    Octobre 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dans une SS2I donc pas que JAVA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 133
    Points : 320
    Points
    320
    Par défaut Poo reference d'une methode a un objet stocker dans $this
    Bonjour,

    je viens de m'essayer à la poo pour refaire un programme, en perl/Tk mais je bloque quand je dois mettre une référence a une méthode pour la commende d'un bouton,

    en effet ma méthode se trouve dans un objet qui est dans $this.

    en gros je vais faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $a = aClass->new();
    $b = bClass->new($a);
    $b->methodQuiVaUtiliserUneMethodDeA();
    et donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    sub methodQuiVaUtiliserUneMethodDeA{
    ...
        $frameLeft->Button(
        -text    => 'Envoyer',
        -background =>"#CCCCFF",
        -command => \&$this->{"objA"}->doIt,
        )->pack(-fill => "x");
    ...
    sauf que ça ne fonctionne pas

    P-S je ne savais pas ou poster, ici ou dans la rubrique sur les UI et comme c'est plus un problème lié au langage ...

    Merci
    Pourquoi faire simple quand on peut faire compliqué.

  2. #2
    Membre averti
    Avatar de magicshark
    Homme Profil pro
    Dans une SS2I donc pas que JAVA
    Inscrit en
    Octobre 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dans une SS2I donc pas que JAVA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 133
    Points : 320
    Points
    320
    Par défaut
    je m'auto répond
    j'ai trouver deux façon de le faire, la première est moche et suppose qu'il n'y ai pas de paramètres et la seconde et bonne même je suppose qu'il y est une véritable façon de le faire qui m'est encore inconnue.

    la première, utilise une propriété de la classe "UNIVERSAL" et de sa méthode "can" qui lorsque la méthode passer en paramètre existe, elle renvoie une référence à cette dernière. Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->{"objA"}->can("doIt")
    là seconde consiste à faire une fonction particulière dont j'ai oublié le nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -command => sub{$this->{"objA"}->doIt(paramètres)}
    voilà je met résolue mais si quelqu'un trouve une meilleure façon je suis preneur.

    Merci
    Pourquoi faire simple quand on peut faire compliqué.

  3. #3
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par magicshark Voir le message
    là seconde consiste à faire une fonction particulière dont j'ai oublié le nom
    Une fonction de rappel, peut-être?

  4. #4
    Membre averti
    Avatar de magicshark
    Homme Profil pro
    Dans une SS2I donc pas que JAVA
    Inscrit en
    Octobre 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dans une SS2I donc pas que JAVA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 133
    Points : 320
    Points
    320
    Par défaut
    en faite j'ai recherché c'est une fonction anonyme cf guide de la programmation perl (by djibril)
    Pourquoi faire simple quand on peut faire compliqué.

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Une fonction anonyme, c'est juste un nom savant pour parler d'une fonction qui n'a pas de nom. Normal, donc, que tu aies oublié son nom.

    Comme elle n'a pas de nom, on l'appelle souvent par une référence (un coderef). En tant que tel, ça n'apporte pas grand chose, mais ça permet d'appliquer toute une série de méthodes de programmation avancée souvent issues de l'univers de la programmation fonctionnelle (Lisp, Scheme, Haskell, etc.): fonctions de rappel (callback fonctions), fermetures (closures), tables de répartition (dispatch tables), tableaux de fonctions, fabriques de ou usines à fonctions (function factory), etc.

    Quand tu fais un sort sur un tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @sorted_array = sort {$a <=> $b} @unsorted_array;
    le bloc de code {$a <=> $b} définissant la comparaison à utiliser est en fait implicitement une fonction anonyme passée à la fonction sort pour qu'elle sache comment elle doit faire le tri.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/01/2007, 10h50
  2. [C#]Acceder à une methode d'un objet d'un webservice
    Par Ezekhiel dans le forum Services Web
    Réponses: 1
    Dernier message: 18/12/2006, 23h37
  3. [POO] Utilisation d'une methode
    Par chtom dans le forum Langage
    Réponses: 2
    Dernier message: 21/11/2006, 13h47
  4. Réponses: 11
    Dernier message: 05/10/2006, 13h20
  5. [POO] Prob avec une méthode de classe
    Par Ludo75 dans le forum Langage
    Réponses: 9
    Dernier message: 06/02/2006, 22h37

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