Desestruturação para expressar intenção

Suponha que você tenha um Hash de dados da empresa codificados por seus símbolos de mercado:

data = {
appl
: [ "Apple, Inc.",
700.09,
354.24,
705.07,
"Tim Cook" ],
amzn
: [ "Amazon, Inc.",
257.47,
256.74,
262.00,
"Jeffrey Bezos" ],
# ...
}

Se você quiser reduzi-lo a uma lista de nomes de empresas e seus respectivos CEOs, o seguinte fará o trabalho:

data.map{ |ticker, details| 
[ details.first, details.last ]
}

No entanto, com o suporte do Ruby para desestruturação, você pode tornar a intenção do seu código mais clara à primeira vista:

data.map{ |ticker, (company, price, wk52hi, wk52lo, ceo)| 
[ company, ceo ]
}

E uma vez que você não se importa com todos os outros detalhes, você poderia esclarecer ainda mais quando escrever:

data.map{ |ticker, (company, _, _, _, ceo)| 
[ company, ceo ]
}