Issue #15514 has been reported by sos4nt (Stefan Schler).

----------------------------------------
Misc #15514: Add documentation for implicit array decomposition
https://bugs.ruby-lang.org/issues/15514

* Author: sos4nt (Stefan Schler)
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
The documentation for [Array Decomposition](http://ruby-doc.org/core/doc/syntax/assignment_rdoc.html#label-Array+Decomposition) says: _"[...] you can decompose an Array during assignment using parenthesis [sic]"_ and gives an example:

```ruby
(a, b) = [1, 2]

p a: a, b: b # prints {:a=>1, :b=>2}
```

But  as we all know  it's also possible _without_ parentheses, i.e.

```ruby
a, b = [1, 2]

p a: a , b: b #=> {:a=>1, :b=>2}
```

This also applies to block arguments when yielding multiple values vs. yielding a single array:

```ruby
def foo
  yield 1, 2
end

def bar
  yield [1, 2]
end

foo { |a, b| p a: a, b: b }
#=> {:a=>1, :b=>2}

bar { |a, b| p a: a, b: b }
#=> {:a=>1, :b=>2}
```

In both cases, parentheses are optional.

This implicit array decomposition could be quite surprising for newcomers. The documentation should cover it.



-- 
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>