Set
JavaのコレクションフレームワークでおなじみのSetですが、Rubyでは添付ライブラリとして提供されています。
require 'set' # Setを作る。 # 引数でEnumerableを指定でき、その要素がSetに追加される。 set = Set.new(["a","b","c"]) #set = Set["a","b","c"] # これでも同じ。 # 要素の列挙 puts "\n---each" set.each {|item| puts item } # 要素の追加 puts "\n---add" set << "x" puts set.collect.join(",") # Enumerableもincludeされている # 重複する要素は追加されない puts "--" set << "x" puts set.collect.join(",") # 要素を含むかどうか評価する。 puts "\n---include?" puts set.include?("a")
実行結果です。
---each a b c ---add a,x,b,c -- a,x,b,c ---include? true
なお、「2つのオブジェクトの等価性は Object#eql? と Object#hashによります」とのこと。Hashと同じです。