Forum: Rails France Exécution une seule fois dans une boucle

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Pierre V. (Guest)
on 2007-07-31 15:11
(Received via mailing list)
Bonjour,

Y-a-t-il une fonction disponible dans Rails comme un filtre *unique* qui
retourne la valeur de l'élément filtré seulement si c'est la première
fois
qu'elle est rencontrée, qu'on pourrait utiliser lors de boucle par
exemple.

Je vous remercie par avance,

Pierre.
come (Guest)
on 2007-07-31 15:45
(Received via mailing list)
Bonjour,

Heu... C'est le principe des caches ça, non ?

Côme
Jean-François Trân (Guest)
on 2007-07-31 16:08
(Received via mailing list)
Côme :
> Heu... C'est le principe des caches ça, non ?
>
> Côme

Merci Côme, au début j'avais mal compris la question, je croyais
qu'il parlait pour une collection donnée et je pensais donc à
Enumerable#detect.

Donc pour les caches, je comprends encore mal la question
si c'est pour une valeur donnée (un attribut d'un objet), ou une
famille de valeurs retournée par des appels de méthode.

Dans le premier cas :

def machin
  @machin ||= calcul_complexe_pour_obtenir_machin()
end

Dans le second cas, il faut faire ce qu'on appelle en anglais
de la memoization :

Voir et lire : http://media.fngtps.com/rubybanter/2007/004/

   -- Jean-François.

--
Ruby ( http://www.rubyfrance.org ) on Rails ( http://www.railsfrance.org
)
(Guest)
on 2007-08-01 13:35
(Received via mailing list)
Bonjour,

En fait, je pensais à l'analogue du filtre unique qui existe sur SPIP
par exemple.

D'après http://www.spip.net/fr_article901.html :

-  [SPIP 1.8] introduit le filtre unique qui retourne la valeur de
l'élément filtré seulement si c'est la première fois qu'elle est
rencontrée. Ce filtre n'est pas limité aux dates mais est intéressant
pour, par exemple, afficher une liste d'articles par date :
<BOUCLE_blog(ARTICLES){par date}{inverse}{"<br>"}> [<hr /><h1>(#DATE|
affdate_mois_annee|unique)</h1>] #TITRE ... </BOUCLE_blog>

cette balise n'affichera la date qu'à chaque changement de mois.

Voici un autre exemple :
<BOUCLE_blog2(ARTICLES){par date}{inverse}> [<hr /><h1>(#DATE|annee|
unique)</h1>] [<h2>(#DATE|affdate{'Y-m'}|unique|nom_mois)</h2>] <a
href="#URL_ARTICLE">#TITRE</a><br /> </BOUCLE_blog2>

affichera une liste ressemblant à :
  2005
       mars
               article de mars
               autre article de mars
       février
               article de février
  2004
       décembre
               un article

Merci :)

Pierre
This topic is locked and can not be replied to.