From: "trans (Thomas Sawyer)" Date: 2012-07-24T01:20:44+09:00 Subject: [ruby-core:46679] [ruby-trunk - Feature #6414] Destructuring Assignment Issue #6414 has been updated by trans (Thomas Sawyer). So this is a shortcut for? name, last = john.values_at(:name, :last) If so, long ago it was suggested Hash#[] support multiple keys: name, last = john[[:name, :last]] Not as short as `{name, last} = john`, but not quite as esoteric either. If assigning from an array can work, eg. john = ['John', 'Smith'] name, last = john Why not hash? So, just john = {:name=>'John', :last=>'Smith'} name, last = john ---------------------------------------- Feature #6414: Destructuring Assignment https://bugs.ruby-lang.org/issues/6414#change-28345 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/