Ruby 2.1: Les nouvelles méthodes de Set
Avec la sortie de Ruby 2.1, la bibliothèque standard Set
s’enrichie de
deux méthodes supplémentaires: disjoint?
et intersect?
.
Set
permet de créer un ensemble d’éléments uniques:
>> require 'set'
>> Set.new [1, 2, 1, 2, 2]
=> #<Set: {1, 2}>
La nouvelle méthode intersect?
permet de tester si deux sets ont au moins
un élément en commun:
>> s1 = Set.new [1, 2, 3]
>> s2 = Set.new [4, 5, 6]
>> s3 = Set.new [1, 8, 9]
>> s1.intersect? s2
=> false
>> s1.intersect? s3
=> true
La seconde méthode, disjoint?
, est son opposée. Elle teste si deux sets n’ont
aucuns éléments communs:
>> s1.disjoint? s2
=> true
>> s1.disjoint? s3
=> false
Ce genre de méthode n’est pas très compliqué à coder soi-même, comme le
montre le code source de intersect?
:
def intersect?(set)
set.is_a?(Set) or raise ArgumentError, "value must be a set"
if size < set.size
any? { |o| set.include?(o) }
else
set.any? { |o| include?(o) }
end
end
Mais l’avoir en standard permet de ne pas réinventer la roue…
Quant au code source de disjoint?
, c’est très exactement comme je
le disais plus haut, l’opposé de intersect?
:
def disjoint?(set)
!intersect?(set)
end
À demain.
/ / / / / / / / / /