锁定老帖子 主题:个人感觉关于Set类的两个缺陷
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-08-07
看来确实是个缺陷,1.8.7版本已经将其修正了。
|
|
返回顶楼 | |
发表时间:2009-08-07
大家都讨论这么高深了,我起初还因为是java呢,原来是ruby,唉,落伍了。
|
|
返回顶楼 | |
发表时间:2009-08-07
nj0308 写道
看来确实是个缺陷,1.8.7版本已经将其修正了。
xxx@xxxx-laptop:~$ ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux] xxx@xxxx-laptop:~$ irb -v irb 0.9.5(05/04/13) xxx@xxxx-laptop:~$ irb irb(main):001:0> require 'set' => true irb(main):002:0> s1 = Set.new [1,2] => #<Set: {1, 2}> irb(main):003:0> s2 = Set.new [1,2] => #<Set: {1, 2}> irb(main):004:0> s1==s2 => true irb(main):005:0> s = Set.new => #<Set: {}> irb(main):006:0> s<<s1 => #<Set: {#<Set: {1, 2}>}> irb(main):007:0> s<<s2 => #<Set: {#<Set: {1, 2}>}> 以上是测试结果。 |
|
返回顶楼 | |
发表时间:2009-08-08
最后修改:2009-08-08
是ruby 1.8.6的bug,我系统中有两个版本ruby,测试结果如下:
ubuntu:~$ ruby -v ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux] ubuntu:~$ irb -v irb 0.9.5(05/04/13) ubuntu:~$ irb irb(main):001:0> require 'set' => true irb(main):002:0> s1 = Set.new [1,2] => #<Set: {1, 2}> irb(main):003:0> s2 = Set.new [1,2] => #<Set: {1, 2}> irb(main):004:0> s1 == s2 => true irb(main):005:0> s = Set.new => #<Set: {}> irb(main):006:0> s << s1 => #<Set: {#<Set: {1, 2}>}> irb(main):007:0> s << s2 => #<Set: {#<Set: {1, 2}>}> irb(main):010:0> exit ubuntu:~$ sudo switch_ruby current = ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux] Select Option 1. ruby-1.8.6-p368 2. ruby-1.8.7-p72 3. ruby-1.8.7-p160 4. ruby-1.9.1-p0 5. exit Your choice? : 1 Current ruby version is : ruby 1.8.6 (2009-03-31 patchlevel 368) [i686-linux] ubuntu:~$ ruby -v ruby 1.8.6 (2009-03-31 patchlevel 368) [i686-linux] ubuntu:~$ irb -v irb 0.9.5(05/04/13) ubuntu:~$ irb irb(main):002:0> require 'set' => true irb(main):003:0> s1 = Set.new [1,2] => #<Set: {1, 2}> irb(main):004:0> s2 = Set.new [1,2] => #<Set: {1, 2}> irb(main):005:0> s1 == s2 => true irb(main):006:0> s = Set.new => #<Set: {}> irb(main):007:0> s << s1 => #<Set: {#<Set: {1, 2}>}> irb(main):008:0> s << s2 => #<Set: {#<Set: {1, 2}>, #<Set: {1, 2}>}> |
|
返回顶楼 | |
发表时间:2009-08-10
就是hash的问题了
ruby 1.8.5 irb(main):019:0> s.hash => -605831918 irb(main):020:0> s1.hash => -605820668 irb(main):021:0> s2.hash => -605827148 ruby 1.8.7 irb(main):010:0> s.hash => 25 irb(main):011:0> s1.hash => 14 irb(main):012:0> s2.hash => 14 |
|
返回顶楼 | |