Eric Mahurin wrote: > On Wed, Apr 23, 2008 at 9:21 AM, David A. Black <dblack / rubypal.com > <mailto:dblack / rubypal.com>> wrote: > > Hi -- > > I'd like to request the deprecation/removal of :: as a synonym for the > method-calling dot. I think it's a good opportunity to take out > something that Ruby doesn't need. We've already got the dot, which > always means "send a message", and :: already means something else > (constant resolution). > > > I'd actually prefer to go the other way and add more value to both > "::" and ".". > > a::b - gives an object named b in the scope of a > a.b - calls an object named b in the scope of a Nice idea, but a::b::c doesn't make any sense, right? Or is it method "c" of the Proc object method(:b)? And how about this inconsistency: a.b <=> a.b() a::b <!=> a::b() In this respect, I like the current behaviour much more, which is less inconsistent. And think about this usage scenario, which is where "::" really helps to mask dynamic class generation: module A class X C = 1 end def self.GenClass(*args) Class.new(X) # do something here end end A::X A::X::C A::GenClass(1, 2, 3) A::GenClass(1, 2, 3)::C Basically you can treat a method that returns a new class like a class, which is beautiful. Regards, Michael