В рубине вы можете сделать это:
d = [1, 2, 3]
a, b, c = d
a, b и c будут получать значения 1, 2 и 3 соответственно.
d, в этом случае в Array и ruby знает, чтобы назначить его содержимому a, b и c. Но если d был Fixnum, например, только a было бы присвоено значение d, а b и c было бы назначено nil.
Какие свойства d позволяют использовать его для множественного присвоения? В моем изучении до сих пор я смог сделать экземпляры подклассов Array таким образом.