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

Ruby Discussion :

Exécuter une méthode d'un fichier .rb : ligne de commande ?


Sujet :

Ruby

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut Exécuter une méthode d'un fichier .rb : ligne de commande ?
    Bonjour,

    voilà, tout est dans le titre ! Je débute avec Ruby et suis quand même étonné de ne pas trouver la réponse à cette question aussi basique...

    J'ai un fichier test.rb:

    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
     
    def fonction1
    	puts "Suis dans la fonction 1"
    end
     
    def fonction2
    	puts "Suis dans la fonction 2"
    end
     
     
    def test(*arg)
    	countArgs = 0;
    	arg.each {|param|
    		t[countArgs] = param
    		countArgs = countArgs+1
    	}
    	countArgs = countArgs+1
    	puts "Vous avez passé #{count-args} argument(s) en paramètre"
     
    	return t
    end

    Et je veux donc pouvoir tester l'exécution en ligne de commande en appelant la fonction test() avec différents cas :

    test(1,2,3) , test("toto", "tata"), test().

    Quelle est donc la commande (on se situe bien entendu dans le répertoire courant où se trouve test.rb) ?

    J'ai essayé bêtement ruby test.rb test() , mais ce n'est bien évidemment pas ca...



    Je précise que j'ai lu le tutoriel (FAQ) Ruby de dev.net, et que je suis en train de lire le bouquin "Ruby les fondamentaux..." d'Alexandre BRILLANT (editions ENI).


    Merci !

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 172
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par n1n0x Voir le message
    voilà, tout est dans le titre ! Je débute avec Ruby et suis quand même étonné de ne pas trouver la réponse à cette question aussi basique...
    Bonjour,

    L'appel de fonctions / procédures / méthodes est assez semblable entre les langages :
    1) tu déclares ta fonction / procédure / méthode
    2) tu l'appelles

    Bref tu es confronté un peu au même cas qu'un programme C ou Java sans fonction / méthode "main". En Ruby il n'y a pas de méthode "main". Pour simplifier on peut considérer que tout ce qui est en dehors des déclarations de classe / méthodes constitue ta méthode main. Bien évidemment tu ne peux pas appeler une méthode qui n'aurait pas été déclarée, il faut donc mettre cette partie du code après tes déclarations.

    Je te propose :
    Ensuite viennent les problèmes Ruby:
    t => Avant d'utiliser un tableau il faut l'instancier. Je te propose d'ajouter :
    count-args : je ne sais pas ce que tu voulais indiquer mais ici Ruby comprends que tu veux soustraire args de count or args est un tableau et count n'est même pas une variable existante.... J'imagine que tu voulais mettre countArgs ? Je te propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    puts "Vous avez passé #{countArgs} argument(s) en paramètre"
    Voici ton code légèrement modifié d'après mes remarques :
    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
    # coding: ISO-8859-1 
     
    def fonction1
    	puts "Suis dans la fonction 1"
    end
     
    def fonction2
    	puts "Suis dans la fonction 2"
    end
     
     
    def test(*arg)
    	countArgs = 0;
            t=[]
    	arg.each {|param|
    		t[countArgs] = param
    		countArgs = countArgs+1
    	}
    	countArgs = countArgs+1
    	puts "Vous avez passé #{countArgs} argument(s) en paramètre"
     
    	return t
    end
     
    puts test(1,2,3)
    Ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Vous avez passÚ 4 argument(s) en paramÞtre
    1
    2
    3
    Pourquoi fais tu un dernier "countArgs = countArgs+1" ? Car cela fausse le résultat.

    Ma proposition pour simplifier ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # coding: ISO-8859-1 
     
    def test(*arg)
    	puts "Vous avez passé #{arg.size} argument(s) en paramètre"
            arg
    end
     
    puts test(1,2,3)
    Dernier point, si tu veux passer les arguments en ligne de commande, tu peux utiliser :

    ARGV est un tableau constant qui contient les arguments que tu passes en ligne de commande.

    Bonne continuation,
    Côme

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Merci pour ta réponse Côme.

    Je ne suis effectivement pas encore familier avec ce principe sans construction d'un programme sans fonction "main()" , pour reprendre la comparaison à java ou c/c++ ...

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

Discussions similaires

  1. [POO] [Introspection] exécuter une méthode
    Par sir_gcc dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2006, 19h37
  2. Est-il possible d'exécuter une fonction à partir de fichier
    Par magic8392 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 16/09/2005, 13h59
  3. [C#] Exécuter une méthode apsx.cs depuis un ascx
    Par bendj dans le forum ASP.NET
    Réponses: 12
    Dernier message: 12/07/2005, 11h18
  4. [Reflection] Exécuter une méthode donnée d'une classe
    Par schousso dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/06/2004, 10h35

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