6.34. kink/container/ORDERED_SET

6.34.1. ordered_set型

ordered_setは、要素が全順序で順序付けられているような、setの部分型である。要素の同値関係は、全順序関係から導出される。

setから継承された次のメソッドは、要素が順番通りに現れることを保証する。

• each

• all?

• any?

• count

• fold

• reduce

• have_all?

• have_any?

6.34.1.1. Set.iter(...[Min])

iterメソッドは、Setの要素をSetの順番で持つiterを戻す。

Minが与えられている場合、結果のiterはMinより大きいか同値の要素だけを持つ。Minが与えられない場合、結果のiterはSetのすべての要素を持つ。

このメソッドは、set型のiterメソッドを拡張している。

事前条件

Minは、要素の全順序の定義域に属さなければならない。

:TREE_SET.require_from('kink/container/')

:Set <- TREE_SET.of('foo' 'bar' 'baz' 'qux')

Set.iter.each{(:E) stdout.print_line(E.repr) }
# Output:
#   "bar"
#   "baz"
#   "foo"
#   "qux"

Set.iter('baz').each{(:E) stdout.print_line(E.repr) }
# Output:
#   "baz"
#   "foo"
#   "qux"

Set.iter('bazzz').each{(:E) stdout.print_line(E.repr) }
# Output:
#   "foo"
#   "qux"

Set.iter('foo').each{(:E) stdout.print_line(E.repr) }
# Output:
#   "foo"
#   "qux"

Set.iter('foooo').each{(:E) stdout.print_line(E.repr) }
# Output:
#   "qux"

6.34.1.2. Set.front

frontは、Setの順序で最初に来る要素を戻す。

事前条件

Setは空であってはならない。

:TREE_SET.require_from('kink/container/')

:Set <- TREE_SET.of('foo' 'bar' 'baz')
stdout.print_line(Set.front.repr) # => "bar"

6.34.1.3. Set.back

backは、Setの順序で最後に来る要素を戻す。

事前条件

Setは空であってはならない。

:TREE_SET.require_from('kink/container/')

:Set <- TREE_SET.of('foo' 'bar' 'baz')
stdout.print_line(Set.back.repr) # => "foo"

6.34.1.4. Set.pop_front

pop_frontは、Setの順序で最初に来る要素をポップして戻す。

事前条件

Setは空であってはならない。

:FLAT_SET.require_from('kink/container/')

:Set <- FLAT_SET.of('foo' 'bar' 'baz')
:Front <- Set.pop_front
stdout.print_line(Front.repr) # => "bar"
stdout.print_line(Set.repr)   # => Flat_set("baz" "foo")

6.34.1.5. Set.pop_back

pop_backは、Setの順序で最後に来る要素をポップして戻す。

事前条件

Setは空であってはならない。

:FLAT_SET.require_from('kink/container/')

:Set <- FLAT_SET.of('foo' 'bar' 'baz')
:Back <- Set.pop_back
stdout.print_line(Back.repr)  # => "foo"
stdout.print_line(Set.repr)   # => Flat_set("bar" "baz")

6.34.2. ORDERED_SET.is?(Val)

is?は、Valがordered_setであるかどうかを戻す。