On parallel assignment

The parallel assignment syntax
[a,b] = [c,d] is not allowed

I have to write
a, b = [c,d]

Going deeper
[a, [b, c]] = [1, [2, 3]] is not allowed

I have to write
a, (b, c) = [1, [2, 3]]

I’m sure there is a good reason these constructs are disallowed.
Can somebody enlighten me?

Christer

Christer N. wrote:

The parallel assignment syntax
[a,b] = [c,d] is not allowed

The left side is an array constructor. In other words: take value of a
and value of b and create a two element array. There is no assignment
here. You cannot create an array on the left side of an assignment and
try to assign to it:

[]=[1,2]
SyntaxError: compile error
(irb):38: syntax error
[]=[1,2]
^
from (irb):38
from â?¥:0

Array.new = [1,2,3]
NoMethodError: undefined method `new=’ for Array:Class
from (irb):39
from â?¥:0

(Array.new) = [1,2,3]
SyntaxError: compile error
(irb):40: syntax error
(Array.new) = [1,2,3]
^
from (irb):40
from â?¥:0

I have to write
a, b = [c,d]

I prefer

a,b=1,2
=> [1, 2]

a
=> 1

b
=> 2

Going deeper
[a, [b, c]] = [1, [2, 3]] is not allowed

I have to write
a, (b, c) = [1, [2, 3]]

You can as well do

a,(b,c)=1,[2,3]
=> [1, [2, 3]]

a
=> 1

b
=> 2

c
=> 3

The outermost array is implicit but you must create nested arrays
explicitely.

I’m sure there is a good reason these constructs are disallowed.
Can somebody enlighten me?

Hope so…

Kind regards

robert

Christer N. wrote:

a, (b, c) = [1, [2, 3]]

I’m sure there is a good reason these constructs are disallowed.
Can somebody enlighten me?

Christer

You should check out one of the websites that list upcoming syntax
changes in Ruby 2.0 - parallel assignment is undergoing relatively
significant changes to weed out possible ambiguity when it’s used.

As well as nested parallel assignment is concerned, I’d say avoid - it’s
potentially a very confusing construct, and makes your intent unclear.
Arrays usually imply the storing of values of homogenous type and
purpose - when used in parallel assignment, it means you’re most
probably not using them that way, and should probably use a different
data structure to store the information to make your code easier to
understand.

David V.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs