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 Java Discussion :

Passage d'une fonction en tant que paramètre


Sujet :

Langage Java

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Passage d'une fonction en tant que paramètre
    Comment vous-y preneriez vous pour coder une fonction qui prend du code java en paramètre ?

    Par exemple la fonction mapcar en Lisp, c'est une fonction qui applique un calcul (que l'on a passé en paramètre) à chaque élément d'une liste.

    Evidement, la fonction de calcul doit être une fonction qui prend un paramètre : la valeur courante de dans la liste.

    Finalement cela revient à passer du code java en paramètre d'une fonction.

    Des astuces ?

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Java ne fonctionne pas comme cela, il utilise les interfaces.

    Par exemple, pour donner à un bouton la fonction à exécuter lorsqu'on clique sur ce bouton, on utilise l'interface ActionListener.

    Le principe est de définir une interface qui impose une fonction.
    On passe alors en paramètre un argument du type de l'interface. Comme ca, on est sur de recevoir un objet qui implémente cette fonction.

    Le bouton demande un ActionListener, qui devra obligatoirement contenir la fonction actionPerformed(ActionEvent). Cela revient au meme que de passer directement la fonction elle meme.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Points : 3
    Points
    3
    Par défaut passage de fonction en paramètre
    Merci pour la réponse,

    Je connait les interfaces mais cela ne convient pass à mon problème, car le code que je désire passer en paramètre n'est peut-être pas encore le code final qui sera executé, il doit pouvoir être modifié par la fonction qui le reçoit avant son execution.

    Il me semble que je ne suis pas pret à migrer mon I.A. en java, je vais rester avec mon Lisp encore un petit moment...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 26
    Points
    26
    Par défaut
    En gros tu veux essayer de faire de la programmation fonctionnelle en Java.

    L'idée de base est d'utiliser des Functor objects.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public interface Functor{
        public Object doSomething(Object arguments...); //les petits points indique que la fonction prend un nombre variable de paramètres (depuis java 5)
    }
    Tu encapsule ton code dans un implementation de Functor, et tu le passe comme argument à ta fonction. Comme par exemple:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    import Functor;
     
    public class Test{
       public static void main(String[] args){
            Functor uneFonctionQuiAfficheUnObject=new Functor(){
               public Object doSomething(Object param...){
                      System.out.println(param[0]); //on ne s'intéresse qu'au premier parametre
                      return null;
               }
            };
     
     
            String chaines={"un", "deux", "trois"};
             uneFonctionQuiItereSurUnTableauEtAppliqueUneAutreFonctionSurChacunDesElements(chaines);
     
        }
     
     
        private static void uneFonctionQuiItereSurUnTableauEtAppliqueUneAutreFonctionSurChacunDesElements(Object[] tab, Functor f){
           for(Object obj: tab){
                f.doSomething(obj);
           }
     
       }
       }
     
    }
    La sortie du programme devrait être:
    Pour plus d'information sur un semblant de programmation fonctionnelle en Java (en anglais):

    http://www.c2.com/cgi/wiki?BlocksInJava

Discussions similaires

  1. passer une variable en tant que text dans une fonction
    Par Barokar dans le forum Langage
    Réponses: 6
    Dernier message: 18/06/2014, 15h23
  2. Réponses: 6
    Dernier message: 13/03/2014, 16h00
  3. Réponses: 10
    Dernier message: 27/09/2010, 17h54
  4. Réponses: 1
    Dernier message: 23/07/2009, 21h14
  5. [FLASH 8] Pb passage d'une fonction en paramètre
    Par segphault dans le forum Flash
    Réponses: 2
    Dernier message: 17/02/2006, 11h14

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