Project

General

Profile

Feature #17392

Updated by jackmaple (maple jack) almost 4 years ago

 
 Hello.Currently, methods and variables in ruby are separated (lisp-2 semantics), but few people define variables and methods as the same name, right? 
 Although some people may do this, should we unify the namespace for the better development of ruby in the future? Does this improve the performance of the language and avoid name confusion. 
 example: 
 ``` ruby 
 def foo 
     puts "ruby method" 
 end 

 foo = 3 

 puts foo # show 3 
 foo() # call method 
 ``` 
 It doesn't feel very good.But can we add an option switch to ensure compatibility? 
 ``` ruby 
 use ruby3 
 def foo 
     puts "ruby method" 
 end 
 foo = 3 
 puts foo # show 3 
 foo() # error 
 ``` 
 If we implement a unified namespace, can we call lambda, proc, block and so on without using call, so that the call forms of methods are unified. 
 ``` ruby 
 use ruby3 
 def foo x 
     return x + 1 
 end 
 f = -> x {x + 1} 
 foo 2 # result = 3 
 f 2 # result = 3 
 ``` 
 In this way, we can make the language more friendly and design more unified.And now there is a scope problem: when defining a method within a method, it should not be visible to the public. 
 ``` ruby 
 def test 
    def test2 
        puts "test2" 
    end 
    puts "test" 
 end 

 test # show "test" 
 test2 # show "test2" but this method should not be called 
 ``` 
 Although syntax supports defining methods within methods, they should not be visible to the public, so this is also a problem. 
 What do you think of this problem? Thank you.

Back