Actions
Bug #11899
closed`Object#public_methods` returns unordered array in Ruby 2.3.0
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
Description
Previous ruby versions returned methods with same order. But this order was changed in Ruby 2.3.0.
Ruby 1.9.3:
1.9.3-p551 :001 > class B
1.9.3-p551 :002?> def self.init
1.9.3-p551 :003?> define_method(:f) {}
1.9.3-p551 :004?> define_method(:b) {}
1.9.3-p551 :005?> define_method(:c) {}
1.9.3-p551 :006?> end
1.9.3-p551 :007?> def a;end
1.9.3-p551 :008?> end
=> nil
1.9.3-p551 :009 > B.init
=> #<Proc:0x0000000217ee98@(irb):5 (lambda)>
1.9.3-p551 :010 > B.new.public_methods(false)
=> [:a, :f, :b, :c]
Ruby 2.2.0:
2.2.0 :007 > class B
2.2.0 :008?> def self.init
2.2.0 :009?> define_method(:f) {}
2.2.0 :010?> define_method(:b) {}
2.2.0 :011?> define_method(:c) {}
2.2.0 :012?> end
2.2.0 :013?> def a;end
2.2.0 :014?> end
=> :a
2.2.0 :015 > B.init
=> :c
2.2.0 :016 > B.new.public_methods(false)
=> [:a, :f, :b, :c]
Ruby 2.3.0:
2.3.0 :001 > class B
2.3.0 :002?> def self.init
2.3.0 :003?> define_method(:f) {}
2.3.0 :004?> define_method(:b) {}
2.3.0 :005?> define_method(:c) {}
2.3.0 :006?> end
2.3.0 :007?> def a;end
2.3.0 :008?> end
=> :a
2.3.0 :009 > B.init
=> :c
2.3.0 :010 > B.new.public_methods(false)
=> [:b, :f, :a, :c]
Updated by nobu (Nobuyoshi Nakada) over 8 years ago
- Status changed from Open to Rejected
It is not guaranteed.
Actions
Like0
Like0