On Nov 8, 11:57 ¨Âí¬ ¢Äáöéä Á® Âìáãë¢ ¼äâì®®®Àòõâùðáì®ãïí¾ ÷òïôåº > > I'm very much in sympathy with the position that &:name is ugly. It's > always struck me as uncharacteristically line-noise-ish for Ruby > (though I also understand the motivation for it). I have trouble > talking myself into using it. > > At the same time, the merit of &:name over :name is that &:name does > tell you what's going on, once you know that the & in front of any > object (symbol or otherwise) in last-argument position means that the > object will be converted to a Proc and play the block role. > > Having :name magically understood as &:name is, for my taste, too much > invisible ink. [...] I think list.map :name is clearly to be understood as list.map { |x| x.send(:name) } not as an abbreviation for list.map &:name which I agree is extraordinarily ugly. I think (don't quote me) allowing #map to take a symbol was debated and rejected a long time ago. I'd like to see it implemented in core, as it's a shortcut for a common idiom, reads nicely and is unambiguous. I don't know when list.inject(:+) started working, but it's a good thing! One thing occurred to me, though. Using "send" in the implementation would allow access to private methods. A check would need to be made before pulling the trigger. -- Gavin Sinclair