[#83107] Alias Enumerable#include? to Enumerable#includes? — Alberto Almagro <albertoalmagro@...>

Hello,

9 messages 2017/10/04

[ruby-core:83390] [Ruby trunk Feature#614][Rejected] instance_method(ancestor)

From: matz@...
Date: 2017-10-19 09:05:13 UTC
List: ruby-core #83390
Issue #614 has been updated by matz (Yukihiro Matsumoto).

Status changed from Assigned to Rejected

Even if we provide the proposed feature, we cannot implement `Module#conflict?`, because ancestor order is not common.

```
module A
end

module B
end

module C
  include A
  include B
end

module D
  include B
  include A
end
```

We need other use-cases to discuss further.

Matz.


----------------------------------------
Feature #614: instance_method(ancestor)
https://bugs.ruby-lang.org/issues/614#change-67351

* Author: trans (Thomas Sawyer)
* Status: Rejected
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
* Target version: next minor
----------------------------------------
=begin
 Currently Module#instance_methods takes a single argument, true or false, as to whether to include all ancestor's methods. However sometimes limiting the search at a particular ancestor is helpful. Currently this requires code along the lines of:
 
     meths = []
     FooClass.ancestors[0..FooClass.ancestors.index(FooAncestor)].each do |anc|
       meths = meths | anc.instance_methods(false)
     end
 
 But it would be nice if we could simply use:
 
     instance_methods(FooAncestor)
 
 This change is, practically-speaking, backward compatible, since 'true' can be the same as 'Kernel', encompassing the entire ancestry.
 
 This change is applicable to the entire family of "methods" methods, including Kernel#methods.
 
 This change also helps eliminate the widely disliked true|false arguments.
 
 The particular use case that brought this to mind was trying to write a Module#conflict? method that lists the methods two modules or classes have in common, but excluding the methods that they share from a common ancestor.
=end




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next