Existe-t-il un meilleur moyen d'écrire ceci :
si montableau.include? 'val1' ||
montableau.include? 'val2' ||
montableau.include? 'val3' ||
montableau.include? 'val4'
Existe-t-il un meilleur moyen d'écrire ceci :
si montableau.include? 'val1' ||
montableau.include? 'val2' ||
montableau.include? 'val3' ||
montableau.include? 'val4'
En utilisant les intersections de jeux de données (Array#:&) :
(monTableau & ["val1", "val2", "val3", "val4"]).présent?
Vous pouvez également faire une boucle (any?
s'arrêtera à la première occurrence) :
monTableau.any? { |x| ["val1", "val2", "val3", "val4"].include?(x) }
C'est bon pour les petits tableaux, dans le cas général, il vaut mieux avoir des prédicats O(1) :
valeurs = ["val1", "val2", "val3", "val4"].to_set
monTableau.any? { |x| valeurs.include?(x) }
Avec Ruby >= 2.1, utilisez Set#intersect :
monTableau.to_set.intersect?(valeurs.to_set)
Y a-t-il quelque chose de plus simple à lire comme ceci if myarray.include? ['val1', 'val2', 'val3']
Sinon, je suppose que votre réponse semble la meilleure.
Pourquoi utiliser la forme négative ? Pourquoi ne pas simplement utiliser (self & other).any?
au lieu de !(self & other).empty?
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.