Issue #6414 has been updated by mame (Yusuke Endoh).


Edward Tsech and Marc-Andre Lafortune,

We discussed your slide at the developer meeting (7/21).

We were not sure if we can actually implement this feature in terms
of yacc.  Could you create an experimental patch?

Matz was basically positive to the feature itself, but wanted to
focus on surely implementable syntax (with no parser conflict and
with reasonable code).

-- 
Yusuke Endoh <mame / tsg.ne.jp>
----------------------------------------
Feature #6414: Destructuring Assignment 
https://bugs.ruby-lang.org/issues/6414#change-28335

Author: edtsech (Edward Tsech)
Status: Assigned
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: core
Target version: 2.0.0


I mean:

john = {name: "John", last: "Smith"}
{name, last} = john # extract value by key from the hash and set to local variable with same name
name # => "John"
last # -> "Smith"

Useful for ex. for  "options" hashes:
def select(options={})
  {only, except} = options
  ...
end

As extra part of this feature can be hash constructing in this way:

name = "John"
last    = "Smith"
find({name, last}) # equals to => find({name: "John", last: "Smith"})

I think both really nice to have in Ruby.
Thanks.


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