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

  FORUM HardWare.fr
  Programmation
  Ruby/Rails

  Array, conversion

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Array, conversion

n°2206687
Profil sup​primé
Posté le 14-10-2013 à 12:39:25  answer
 

Salut,
comment je peux faire pour m'assurer qu'un argument donné à une méthode soit toujours un Array.

Code :
  1. def test(arg)
  2.   arg = [arg] if !arg.is_a?(Array)
  3. end

Il y a pas une astuce plus simple? comme convertir sans rajouter de doubles accolades (un Array qui en contien un autre).


Message édité par Profil supprimé le 14-10-2013 à 12:40:08
mood
Publicité
Posté le 14-10-2013 à 12:39:25  profilanswer
 

n°2206689
masklinn
í dag viðrar vel til loftárása
Posté le 14-10-2013 à 13:04:21  profilanswer
 

Pourquoi tu veux t'assurer que cet argument est toujours un array?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2206692
Profil sup​primé
Posté le 14-10-2013 à 13:40:24  answer
 

J'ai une méthode avec un argument optionnel, par defaut cet argument est un array vide.
Je veux pouvoir appeler cette méthode avec un Array de plusieurs éléments (comprenant uniquement des chaînes)
Ou bien appeler cette méthode avec une seule chaîne pour qu'au final ce soit un array d'un seul élément.  
C'est juste pour simplifier l'appel dans le cas d'un seul élément.

Message cité 1 fois
Message édité par Profil supprimé le 14-10-2013 à 13:45:12
n°2206694
masklinn
í dag viðrar vel til loftárása
Posté le 14-10-2013 à 13:46:10  profilanswer
 


Splat argument:

Code :
  1. > def test(*args)
  2. >   puts args
  3. > end
  4. > test()
  5. > test(1)
  6. 1
  7. > test(1, 2)
  8. 1
  9. 2
  10. > test(1, 2, 3, 4, 5)
  11. 1
  12. 2
  13. 3
  14. 4
  15. 5
  16. > a = [1, 2, 3]
  17. > test(*a)
  18. 1
  19. 2
  20. 3


Message édité par masklinn le 14-10-2013 à 13:49:01

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2206698
Profil sup​primé
Posté le 14-10-2013 à 14:20:33  answer
 

Ouai je vois mais en fait c'est plus compliqué que ça, j'ai plusieurs arguments de méthode.
Un requis, deux optionnels.
 
D'ailleurs j'en profite pour te demander, il vaut mieux définir la méthode comme ça.

Code :
  1. def meth(arg1, opt1=[], opt2=false)
  2. end


ou

Code :
  1. def meth(arg1, opt1: [], opt2: false)
  2. end


Ce que j'ai compris, c'est que la deuxième façon de faire, je dois appeler la méthode avec opt1: value
 
Ce que je voulais faire au départ:

Code :
  1. def meth(arg1, opt1=[], opt2=false)
  2.   opt1 = [opt1] if !opt1.is_a?(Array)
  3. end
  4. meth(arg1, ["un", "deux"])
  5. meth(arg1, "un" )


 
Avec ce que tu m'as proposé, le mieux ce serait de faire ça non?

Code :
  1. def meth(arg1, *opt1, opt2: false)
  2. end
  3. meth(arg1, "un" )
  4. meth(arg1, "un", opt2: true)
  5. meth(arg1, "un", "deux", "trois", opt2: true)


 
Merci  :jap:

n°2206729
masklinn
í dag viðrar vel til loftárása
Posté le 14-10-2013 à 17:50:42  profilanswer
 

J'aurais tendance à dire oui, mais ça dépend en partie de la sémantique de tes arguments (de ce qu'ils veulent dire et de la manière dont ils sont utilisés)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

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

  Array, conversion

 

Sujets relatifs
envoie d'un array php au format jsonQuestion sur les tables
Construire un array directement de la BDDquestion htaccess / apache
[POWERSHELL] Import CSV | Array et Hashtable structurés ![VBA] Petite Question sur les Array's
question sur les array()question de débutant à propos des array
[PHP] question niveau 5 ( sur 5 ) Array...question dur au niveau TRIE d'un array multidimmensionnel
Plus de sujets relatifs à : Array, conversion


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