Project

General

Profile

Feature #16615

Updated by Dan0042 (Daniel DeLorme) over 1 year ago

Given a method `.bar`, which defines an instance method `#baz` `#bar` on a class, and returns the defined method's name as a symbol (`:baz`). 

 ``` 
 class Foo 

   private 

   # On evaluation defines a method and returns its name. 
   # In current Ruby, that method will be public. The suggested 
   # behaviour is to make it private, since the class method 
   # which defines the instance method is in the private scope. 
   # 
   bar :baz 
 end 
 ``` 

 it would be neat if the dynamically defined instance method respected the scope in which its definition originated. (In this particular case `private`.) 

 Essentially the request is to extend the special powers of `attr_*` (being able to define methods that honour visibility scopes) to any method. 

 Note: I am aware that inline access scopes already work for dynamically defined methods, as they merely accept a symbol as an argument. 

 Edit: Changed `macro` to `bar` so people don't get hung up on the name of the method (which has no importance to the proposal.)

Back