Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library set

library set

要約

集合を表す Set クラスと、取り出し順序を保証した SortedSet クラスを提供 します。

集合とは重複のないオブジェクトの集まりです。 Array の持つ演算機能と Hash の高速な検索機能を合わせ持ちます。

Set および SortedSet は内部記憶として Hash を使うため、集合要素の 等価性は Object#eql?Object#hash を用いて判断されます。 したがって、集合の各要素には、これらのメソッドが適切に定義されている 必要があります。

Set クラスでは、集合要素を取り出す際の順序は保証されません。 一方、SortedSort では、集合要素はソートされた順序で取り出されます。

また、set ライブラリを require すると Enumerable モジュールが 拡張され、Enumerable#to_set の形で集合オブジェクトを生成できる ようになります。

注意事項

Ruby 1.9 では、集合オブジェクトに対する taint, untaint, freeze の各 メソッドの効果は、内部記憶として保持するハッシュにも適用されます。

集合オブジェクトおよびその内部記憶にセットされた taint 情報は、 dupおよび clone メソッドによって複製された集合オブジェクトにもコピー されます。

ただし、freeze された集合を clone した場合、複製された集合の内部記憶 には freeze 情報が引き継がれません。 したがって、生成された集合に対する要素の変更はエラーになりません。

require 'set'

set1 = Set.new ["foo", "bar", "baz", "foo"]

p set1                  #=> #<Set: {"baz", "foo", "bar"}>
p set1.include?("bar")  #=> true

set1.add("heh")
set1.delete("foo")
p set1                  #=> #<Set: {"heh", "baz", "bar"}>

クラスとモジュール

class Set

集合を表すクラスです。要素の間に順序関係はありません。

class SortedSet

各要素をソートされた形で扱う集合クラスです。

追加・再定義されるメソッド

Enumerable#to_set(klass = Set, *args) -> Set [added by set]
Enumerable#to_set(klass = Set, *args) {|o| ... } -> Set [added by set]

Enumerable オブジェクトの要素から、新しい集合オブジェクトを作ります。

引数 klass を与えた場合、Set クラスの代わりに、指定した集合クラスの インスタンスを作ります。 この引数を指定することで、SortedSet あるいはその他のユーザ定義の 集合クラスのインスタンスを作ることができます。

引数 args およびブロックは、集合オブジェクトを生成するための new メソッドに渡されます。

[PARAM] klass:
生成する集合クラスを指定します。
[PARAM] args:
集合クラスのオブジェクト初期化メソッドに渡す引数を指定します。
[PARAM] block:
集合クラスのオブジェクト初期化メソッドに渡すブロックを指定します。
[RETURN]
生成された集合オブジェクトを返します。
p [10, 20, 30].to_set
#=> #<Set: {30, 20, 10}>
p [10, 20, 30].to_set(SortedSet)
#=> #<SortedSet: {10, 20, 30}>
p [10, 20, 30].to_set {|num| num / 10}
#=> #<Set: {1, 2, 3}>

[SEE_ALSO] Set.new

Classes

Sublibraries