Edge Rails: Array#second até Array#tenth

2 de julho de 2008  |  Rails 2.2  | 

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…



10 Comentários


  1. Totally useless: it doesn’t improve code reading (nor writing…). IMHO

  2. 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…

  3. Ahahaha

    Eu gostei :)

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

  5. hehehe o DHH adora esses detalhes. O bom é que na medida em que cresce o framework, estão surgindo iniciativas pra otimizar.

    :)

  6. 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!

  7. Eu achei legal a novidade. Legal != útil :-)

    Isso é bem coisa do David mesmo, ficar se preocupando com detalhe do detalhe :-P.

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

  9. Deus nunca está errado auhauhauh

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

Trackbacks

  1. Arkadiusz Hiler’s blog » Blog Archive » array.tenth == array[9]

Deixe um comentário