Kotlin has it, too. It's a nice feature. In a pet language of mine, I added the index as an "implicit" argument, too. Something like this:

elements  = ["foo", "bar", "baz"]
elements.each {
  puts "Element at index #{idx} has value #{it}."
}

"Element at index 0 has value foo."
"Element at index 1 has value bar."
etc....

I think it would be handy to have that in Ruby.

~ Ale Miralles.
http://amiralles.com.ar



On Thu, Feb 7, 2019 at 4:36 AM <matz@ruby-lang.org> wrote:
Issue #4475 has been updated by matz (Yukihiro Matsumoto).


I still feel weird when I see `@` and `@1` etc. Maybe I will get used to it after a while.
I need time.

Matz.


----------------------------------------
Feature #4475: default variable name for parameter
https://bugs.ruby-lang.org/issues/4475#change-76718

* Author: jordi (jordi polo)
* Status: Assigned
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
* Target version:
----------------------------------------
=begin

There is a very common pattern in Ruby:

 object.method do |variable_name|
  variable_name doing something 
 end

 Many times in fact the name of the object is so self explanatory that we don't care about the name of the variable of the block. It is common to see things like :

 @my_sons.each { |s| s.sell_to_someone }

or

 Account.all.each { |a|  my_account << a.money }


 People tend to choose s or a because we have the class or the object name just there to remind you about the context.


I would like to know if can be a good idea to have a default name for that parameter. I think it is Groovy that does something like:

  Account.all.each { my_account << it.money }

Where it is automagically filled and it doesn't need to be declared. 

I think it is as readable or more (for newbies who don't know what is ||) and we save some typing :)


=end




--
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>