Project

General

Profile

Feature #9992

Updated by nobu (Nobuyoshi Nakada) about 6 years ago

 Hi, 
 
 
 
  I’m would like to discuss with you the concept of Internal Interfaces. 
 
 
 
  Currently ruby offers three access modifiers choices to set methods visibility: 

 
  - public 
 
  - protected 
 
  - private 

 
 
  Public methods define what we may call the Public Interface. 
 
  Private methods are private to the class and its subclasses. 
 
  Protected methods are public for the subclasses. 
 
 
 
  I would like to work with a new access modifier that would allow the creation of Internal methods. 
 
 
 
  Internal methods would be object methods that could only be called within the namespace. 
 
 
 
  Ex: 

 ~~~ruby 
 module Foo; end 

 
 
  class Foo::Bar 
   
    def baz  
       
        puts ‘baz’ 
   
     end 
   
     internal :baz 
 
  end 

 
 
  class Foo::Qux 
   
    def baz 
      
       ::Foo::Bar.new.baz 
   
    end 
 
  end 
 ~~~ 

 
 
  Is this something that we can think about in a future implementation of ruby? 
 
  An extra feature that would not break backward compatibility. 
 
 
 
  Cheers, 
 
  Daniel

Back