Bug #82 [ruby-reference-manual:859]

頭山な集合における Set#include?

Added by Ken DATE 395 days ago. Updated 151 days ago.

Status :Open Start :03/13/2008
Priority :Low Due date :
Assigned to :- % Done :

0%

Category :doc
Target version :-
reporter :

rock

ruby_version :

1.9


Description

Set#include? の説明に

  オブジェクト o がその集合に属する場合に true を返します。

とありますが,Ruby 1.9 ではもう少し説明が必要そうです。
Ruby 1.9 でハッシュの実装が変わったためか,Set#include? の動作が ruby 1.8 と違う場合があります。

具体的には,集合が自身を含む場合や,二つの集合が互いを含む場合に(つまり頭山な集合において),
以下のように false を返すようです。

  s=Set[]
  s << s
  p s.include?(s) #=> false

  s1=Set[]
  s2=Set[]
  s1 << s2
  p s1.include?(s2) # => true
  s2 << s1
  p s1.include?(s2) # => false

なお,試した Ruby のバージョンは「ruby 1.9.0 (2007-12-25 revision 14709) [i386-mswin32]」です。

Also available in: Atom PDF