Issue #4830 has been updated by Lazaridis Ilias.


Nobuyoshi Nakada wrote:
> Hi,
>  
>  At Sun, 5 Jun 2011 17:23:26 +0900,
>  Lazaridis Ilias wrote in [ruby-core:36750]:
>  > for arrays: use "item" by default
>  > for hashes: use "key" and "value" by default
>  
>  Why different names?
>  
>  There is no way to tell what class the receiver is to the
>  parser.  Your proposal needs very big change under the hood.

I don't know the underlying implementation, so I suggested simply from a users view.

If the arrays gets "value" instead of "item", it would be fine, of course.


----------------------------------------
Feature #4830: Provide Default Variables for Array#each and other iterators
http://redmine.ruby-lang.org/issues/4830

Author: Lazaridis Ilias
Status: Assigned
Priority: Low
Assignee: Yukihiro Matsumoto
Category: core
Target version: 


for arrays: use "item" by default
for hashes: use "key" and "value" by default

names = ["Jane", "Michele", "Isabella"]
names.each { |name| print name, "\n" } 
names.each { print item, "\n" } 

contact = {name:"Jane", phone:"1234567"}
contact.each { |key, value| print key, ": ", value, "\n"}
contact.each { print key, ": ", value, "\n"}

-

The benefits are:

* more compact code (without loosing clarity of the code).
* no repetitions ("names, name, name") in a one-liner with {} block

This extension does not break any existent behaviour.


-- 
http://redmine.ruby-lang.org