Que David Heinemeier Hansson (DHH) gosta de inventar coisas no Rails não é segredo para ninguém, mas algumas vezes ele meio que exagera um pouco. Veja por exemplo esta última adição que ele fez.
No objeto Array hoje já temos o método first e last, então porque não ter também os métodos second, third, fourth e assim por diante? É isso mesmo, ele acrescentou ao objeto Array os métodos que vão do second (segundo) até o tenth (décimo), que servem para retornar o objeto especifico dentro do Array (o terceiro objeto do array, por exemplo).
Vamos aos exemplos:
array = (1..10).to_a
array.second # => array[1]
array.third # => array[2]
array.fourth # => array[3]
array.fifth # => array[4]
array.sixth # => array[5]
array.seventh # => array[6]
array.eighth # => array[7]
array.ninth # => array[8]
array.tenth # => array[9]
Minha opinião? Total falta do que fazer…
Totally useless: it doesn’t improve code reading (nor writing…). IMHO
Acredito que o Rails em pouco tempo vai se tornar um framework gigante e complexo… para não falar em pesado…
Esse tipo de “adição” demonstra como não existe um pulso firme para “brekar” esse tipo de coisa estupida…
Ahahaha
Eu gostei :)
Na verdade, isso é extremamente útil e algo que a maioria das linguagens funcionais–que fazem uso pesado de listas–implementam por padrão. O motivo para elas é simples, já que tudo é uma lista. Mas no caso do Rails, é bem útil na conversão de Hashes para Arrays, que acontece por padrão em alguns casos e outros usos de listas com pareamentos mais avançados.
hehehe o DHH adora esses detalhes. O bom é que na medida em que cresce o framework, estão surgindo iniciativas pra otimizar.
:)
Que tosco, parece aqueles códigos de quem tá aprendendo a programar com um monte de if.
Se isso fosse em C com macros ainda ia:
#define second 1
array[second]
Mas adicionar um monte de métodos para nada!
Eu achei legal a novidade. Legal != útil :-)
Isso é bem coisa do David mesmo, ficar se preocupando com detalhe do detalhe :-P.
Ele só está tentando deixar Ruby mais parecido com LISP :)
Só falta fazer array.nth(31)
Não acho que deixa pesado, nem é inútil. Também não acho que é falta do que fazer. Não acho que ele estava sentado em sua casa comendo pipoca e aí pensou que podia adicionar métodos a classe Array. Acho que ele estava desenvolvendo alguma coisa, precisou de um second ou third e pensou como seria útil ter isso, como na maioria das linguagens funcionais (como já foi dito). Isso é uma modificação rápida, que ele faz em pouquíssimos minutos. E não vejo motivos sólidos para não fazê-la.
Deus nunca está errado auhauhauh
Concordo com o Thiago, o `nth’ do Common Lisp é muito mais prático e funciona para todas as ocasiões. Legal mesmo seria fazer algo do tipo array.31.st ou array.4.th, mas o interpretador não aceita essa sintaxe.