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

  FORUM HardWare.fr
  Programmation
  Ruby/Rails

  [RUBY] intersection d'array

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RUBY] intersection d'array

n°2215709
jackruby
Posté le 10-01-2014 à 13:17:21  profilanswer
 

Bonjour
 
Je débute en ruby et je me demande comment construire une liste d'intersection de plusieur table.
 
Je m'explique, j'ai une liste de groupe et j'interroge un spacewalk qui me répond quels sont les serveurs dans ces groupes.
L'intersection se passe normalement avec "&" pour une liste de 2 groupes
 

Code :
  1. irb(main):046:0> ["hostname1", "hostname2", "hostname3", "hostname4", "hostname5"] &  ["hostname1", "hostname2", "hostname3"]
  2. => ["hostname1", "hostname2", "hostname3"]


 
Mais voila, la liste des groupes est de taille variable d'où un "each"... mais là j'en perds un peu mon latin :s
 
Pourriez vous m'indiquer la bonne façon de faire ?
 
 
Merci
 

Code :
  1. irb(main):035:0> liste=["GROUP1", "GROUP2"]
  2. => ["GROUP1", "GROUP2"]
  3. irb(main):036:0> spwk.list_systems_in_group(session_key, "GROUP1" ).map {|i| i["hostname"]}
  4. warning: peer certificate won't be verified in this SSL session
  5. => ["hostname1", "hostname2", "hostname3", "hostname4", "hostname5"]
  6. irb(main):037:0> spwk.list_systems_in_group(session_key, "GROUP1" ).map {|i| i["hostname"]}
  7. warning: peer certificate won't be verified in this SSL session
  8. => ["hostname1", "hostname2", "hostname3"]
  9. irb(main):041:0* res=nil 
  10. => nil
  11. irb(main):042:0> liste.each { |group|
  12. irb(main):043:1* res &= sw_api_client.list_systems_in_group(session_key, group).map {|i| i["hostname"]}
  13. irb(main):044:1> }
  14. warning: peer certificate won't be verified in this SSL session
  15. warning: peer certificate won't be verified in this SSL session
  16. => ["GROUP1", "GROUP2"]
  17. irb(main):045:0> puts res
  18. false
  19. => nil


mood
Publicité
Posté le 10-01-2014 à 13:17:21  profilanswer
 

n°2215710
black_lord
Truth speaks from peacefulness
Posté le 10-01-2014 à 14:40:03  profilanswer
 

je déplace en cat prog


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°2215711
black_lord
Truth speaks from peacefulness
Posté le 10-01-2014 à 14:40:31  profilanswer
 

Ce sujet a été déplacé de la catégorie Linux et OS Alternatifs vers la categorie Programmation par Black_lord


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°2215722
jackruby
Posté le 10-01-2014 à 15:09:04  profilanswer
 

Merci black_lord

n°2215744
masklinn
í dag viðrar vel til loftárása
Posté le 10-01-2014 à 16:18:56  profilanswer
 

Non mais là le problème c'est que tu initialises ton `res` à `nil`. Donc ton premier tour de boucle tu fais un `nil & array`. Et sur NilClass, TrueClass et FalseClass `&` est équivalent à `&&`.
 
Donc `nil & array` -> false, puis tu continues avec `false & array` -> false. Donc t'as un false à la fin, normal.
 
Je décomposerais en deux parties: récupérations des machines puis intersection, et pour l'intersection de tous les sets d'une séquence, un fold:

Code :
  1. result = list.map {|group|
  2.    sw_api_client.list_systems_in_group(session_key, group).map {|s| s['hostname'] }
  3. }.inject {|memo, systems|
  4.    memo & systems
  5. }


un truc du style


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2215756
jackruby
Posté le 10-01-2014 à 17:08:16  profilanswer
 

ok jevois le genre
 
Merci bien


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

  [RUBY] intersection d'array

 

Sujets relatifs
Indexation en RubyChamps input vers Array PHP
Array sort_by BooleanArray, conversion
[recrutement] Recherche programmeur Ruby on RailsSockets: Question générale (pas seulement Ruby)
Constructeur par défaut d'un std::arrayprobleme array_multisort
envoie d'un array php au format jsonConstruire un array directement de la BDD
Plus de sujets relatifs à : [RUBY] intersection d'array


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