Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1731 connectés 

  FORUM HardWare.fr
  Programmation
  Ruby/Rails

  Demander à l'utilisateur de definir le nom d'un objet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Demander à l'utilisateur de definir le nom d'un objet

n°2076767
sleeping_b​anana
Posté le 18-05-2011 à 10:23:13  profilanswer
 

Bonjour, à tous!
 
Je suis tout nouveau ici donc:  :jap: ET nouveau sur ruby donc: :jap: ^2
Je n'ai pas trouvé de réponse ailleurs, ni dans des tuto ni sur les forums...
 
Voila mon probleme: je souhaite demander à l'utilisateur de définir le nom d'un objet (d'une instance de classe pour etre precis).
 
Exemple simple:
 

Code :
  1. class Adresse
  2.     attr_reader :rue
  3.     def initialize
  4.         @rue
  5.     end
  6. end


 
Puis  
 

Code :
  1. adresse = Adresse.new


 
SAUF que je veux que se soit l'utilisateur qui definisse que Adresse.new s'appelle adresse.
J'ai essayé toutes les combinaisons possibles avec gets mais je ne dois pas bien m'y prendre... A tel point que je commence à douter que ce soit possible (si c'est le cas je suis preneur d'une idée pour arriver au même résultat d'une autre façon of course!) :sweat:  
 
Des idées??
 

mood
Publicité
Posté le 18-05-2011 à 10:23:13  profilanswer
 

n°2076773
LeRiton
Posté le 18-05-2011 à 10:40:47  profilanswer
 

Tu veux que l'utilisateur choisisse le nom de la variable à laquelle sera affectée ta création d'objet, c'est ça ?
Si oui, tu viens sûrement de PHP et il n'y a pas de bonne justification à ce besoin, dis nous plutôt pourquoi tu penses avoir besoin de ce mécanisme.

n°2076776
esox_ch
Posté le 18-05-2011 à 10:49:01  profilanswer
 

Salut,

 

Quel est le but exactement? Parce que je vois pas du tout l'utilité d'un tel truc pour être franc..
Edit: Grilled..


Message édité par esox_ch le 18-05-2011 à 10:49:27

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2076785
sleeping_b​anana
Posté le 18-05-2011 à 11:19:47  profilanswer
 

Bonjour bonjour,
 
Dsl si je m'exprime en langage de béotien mais on fait ce qu'on pneu.
 
L'idée est d'avoir plusieurs instance du'une même classe (Adresse ici) que l'on pourrai appeler individuelement (adresse_de_bob par exemple) et que l'on puisse lister toutes les instances.
J'ai essayé avec un @name sauf que si le nom de l'objet et la valeur du @name sont différente ca fout le boxon...
En short je voudrai que le nom de l'objet soit le même que son @name ou pouvoir le stocker qqpart. typiquement quand je fais ca avec le @name, je liste les @name (ok) je demande à l'utilisateur lequel il veut charger et là, vu qu'il tombe sur l'objet qui a un nom différent de son @name (loi de Murphy oblige) ca ne marche pas...

n°2076790
sleeping_b​anana
Posté le 18-05-2011 à 11:29:40  profilanswer
 

A moins qu'il existe une méthode pour browser les instances existantes d'une classe donné (cherché, pas trouvé, même si ca simplifierai bien mon pb) ou d'y faire référence par son  @name...

n°2076791
LeRiton
Posté le 18-05-2011 à 11:34:09  profilanswer
 

Ce que tu veux c'est un tableau, éventuellement un dictionnaire clé => valeur où la clé serais le nom de ton adresse (?) et la valeur ta référence vers l'objet créé. C'est quoi ton soft, un site RoR ou un programme en ligne de commande ? Comment tu obtiens ton identifiant d'adresse ?

n°2076792
esox_ch
Posté le 18-05-2011 à 11:34:34  profilanswer
 

Je n'ai toujours pas compris ce que tu veux faire. Pourquoi ne pas garder toutes tes instances dans un Array?
Edit: Je commence à en avoir marre de me faire griller :o


Message édité par esox_ch le 18-05-2011 à 11:35:01

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2076797
sleeping_b​anana
Posté le 18-05-2011 à 11:49:49  profilanswer
 

@LeRiton: exactement! je veux pouvoir accéder aux objets via leur nom (adresse ici). Je suis en ligne de commande (pour l'instant). Comment je fais ça? (je vais chercher juste apres avoir posté ce message mais si tu te sens d'expliquer gentiment à un newbie comment faire tu serai un a-mour =)  
Encore une fois je ne sais pas comment acceder à "la reference vers l'objet créé"... je crois que c'est ca mon probleme (Cf being a noob) =)
l'idée originale (au sens de premiere et non de nouvelle) c'etait de demander à l'utilisateur comment il voulait l'appeler et de faire un gets.chomp.to_whatever...
 
@esox_ch: d'apres ce que j'ai compris tu propose la même solution (encore que je peux me tromper?). même question. EDIT: mais oui dans l'idée c'est exactement ce que je veux faire, je sais juste pas comment faire =)


Message édité par sleeping_banana le 18-05-2011 à 11:57:30
n°2076799
LeRiton
Posté le 18-05-2011 à 11:59:46  profilanswer
 

Supposons que Address contient un champ name (en plus de ton street d'après ce que j'ai compris), et que le tout te soit donné à la création par l'utilisateur.

 

De ton côté, tu fais

 
Code :
  1. adresse = Adresse.new # j'imagine que tu passes les paramètres reçus comme le nom et la rue au constructeur
 

ce qui stock dans une variable address la nouvelle instance. A chaque création, rien ne t'empêche de stocker cette nouvelle instance dans un tableau, soit par exemple après ta création

 
Code :
  1. ton_tableau_adresses << adresse
 

et au moment où tu as besoin de quelque chose, tu vas le chercher dans ton tableau

 
Code :
  1. ton_tableau_adresses.each { |address|
  2.    address if address.name == name
  3. }
 

ou un truc du style, j'ai pas d’interpréteur sous la main.

 

Edit : esox_ch [:hahaguy]


Message édité par LeRiton le 18-05-2011 à 12:05:33
n°2076804
sleeping_b​anana
Posté le 18-05-2011 à 12:21:57  profilanswer
 

Moui moui moui
résumons:
 
l'utilisateur fais

Code :
  1. adresse= Adresse.new


il doit aussi faire  

Code :
  1. ton_tableau_adresses << adresse


ou bien je peux l'incorporer dans mon programe (ce que je voudrai pouvoir faire dans l'absolu). si c'est le cas, comment je récupère le "adresse"?
 
voila comment je voyais les choses avant de jeter cette bouteille à la mer:
 

Code :
  1. #dans un main pas encore écrit
  2. puts "Créer une nouvelle adresse. Nom?"
  3. nom=gets.chomp.to_s
  4. >adresse
  5. #{nom}=Adresse.new
  6. mon_tableau_d'adresses.push #{nom}
  7. #qui, dans un monde parfait créerai l'objet adresse, instance de la classe Adresse. sauf que évidement la syntaxe #{} ne fonctionne pas comme ca, et que si j'utilise:
  8. puts "Créer une nouvelle adresse. Nom?"
  9. nom=gets.chomp.to_s
  10. >adresse
  11. nom=Adresse.new
  12. mon_tableau_d'adresse.push nom
  13. #ca me crée un objet nom instance de Adresse, au lieu d'un objet adresse, vu que j'ai réassigné la variable/objet nom...


...
voila voila
je pense qu'il y a un truc que j'ai loupé parceque ca me parrait évident que il y a plein de gens qui doivent utiliser ca tout le temps... non?
 
   

mood
Publicité
Posté le 18-05-2011 à 12:21:57  profilanswer
 

n°2076809
LeRiton
Posté le 18-05-2011 à 13:21:15  profilanswer
 

sleeping_banana a écrit :

l'utilisateur fais


Non, c'est écrit dans le source de ton programme, comme le reste des "instructions".

sleeping_banana a écrit :


Code :
  1. adresse= Adresse.new


il doit aussi faire  

Code :
  1. ton_tableau_adresses << adresse


ou bien je peux l'incorporer dans mon programe (ce que je voudrai pouvoir faire dans l'absolu). si c'est le cas, comment je récupère le "adresse"?


Les deux lignes de codes sont dans ton programme, je vois pas où elles pourraient être autrement d'ailleurs. Comment récupérer "adresse" : bin c'est la variable que tu as défini à la ligne précédente.
 

n°2076831
sleeping_b​anana
Posté le 18-05-2011 à 14:47:39  profilanswer
 

okaaaaaaaaaaaaaaay :D
merci de ta patience, je suis un peu lent à la détente... ca doit etre la digestion... ou les bonbons japonais que mon frere ma ramené ils brillaient dans le noir...
 
bon. donc en gros tu suggere de tout mettre dans un hash ?
 
J'ai testé ca a l'air de faire ce que je veux... (c'est aussi ce que esox_ch suggerai, je vais essayer de faire comme ca
 
 (je reviendrai t'em####er si je peux pas faire autrement  :pt1cable: )
 
Merci beaucoup en tout cas!  :jap:  :jap:  
 
PS: si tu as encore deux minutes, je veux bien que tu m'explique pourquoi de temps en temps irb me renvoie tout un tas de répertoires... genre:
 

Code :
  1. irb(main):583:2*
  2. .ICEauthority              .esd_auth                  .gstreamer-0.10/           .netx/                     .themes/                   Images/
  3. .adobe/                    .evolution/                .gtk-bookmarks             .netxrc                    .thumbnails/               Modèles/
  4. .bash_history              .fontconfig/               .gvfs/                     .openoffice.org/           .update-manager-core/      Musique/
  5. .bash_logout               .gconf/                    .icons/                    .pki/                      .update-notifier/          Public/
  6. .bashrc                    .gconfd/                   .java/                     .profile                   .xine/                     Téléchargements/
  7. .cache/                    .gem/                      .kde/                      .pulse/                    .xsession-errors           Vidéos/
  8. .codeblocks/               .gksu.lock                 .local/                    .pulse-cookie              .xsession-errors.old       backup.log
  9. .config/                   .gnome2/                   .macromedia/               .recently-used.xbel        Bureau/                    examples.desktop
  10. .dbus/                     .gnome2_private/           .mozilla/                  .ssh/                      Desktop/                   testdisk.log
  11. .dmrc                      .gnupg/                    .nautilus/                 .sudo_as_admin_successful  Documents/


n°2076855
LeRiton
Posté le 18-05-2011 à 15:40:42  profilanswer
 

Joker, j'utilise pas (plus, et très peu avant) IRB :D

n°2076861
sleeping_b​anana
Posté le 18-05-2011 à 16:07:47  profilanswer
 

Tu utilises quoi? un IDE?

n°2076976
esox_ch
Posté le 19-05-2011 à 06:59:45  profilanswer
 

En fait tu serais même pas obliger de le rajouter toi même à l'array en faisant une Factory mais bon c'est un peu compliqué et overkill si le problème est juste d'éviter d'écrire adresses << adresse; :D
 
Et pourquoi tu parles de mettre ça dans un Hash? L'ordre a une importance? Parce que là LeRiton t'a fait voir comment le mettre dans un array
 
Pour irb: C'est parce que tu as tapé "tab" sur ton clavier, et donc ça a le même effet que dans Bash :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2077103
sleeping_b​anana
Posté le 19-05-2011 à 13:51:10  profilanswer
 

Comment je fais un truc un peu propre sans utiliser de tabulation?
 
L'ordre n'a pas particulierement d'importance, et effectivmement un tableau ca marche tres bien =D
 
c'est quoi le principe des factory?

n°2077105
esox_ch
Posté le 19-05-2011 à 13:54:31  profilanswer
 

Bein tu utilises des Singleton :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ruby/Rails

  Demander à l'utilisateur de definir le nom d'un objet

 

Sujets relatifs
[VBS]Tester l'appartenance d'un utilisateur à un groupe ADalgorithme placement objet dans un tableau
Utilisateur universelserialisation d'un objet
Problème programmation orientée objetdefinir un nom d'id contenant une variable
demander une confirmation pour lancer un raccourciModifier un objet depuis un objet le contenant
problème de liaison d'un objet distant 
Plus de sujets relatifs à : Demander à l'utilisateur de definir le nom d'un objet


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR