Un grand merci à Dorian et Phrogz pour m'avoir rappelé l'existence de la méthode #replace pour les tableaux (et les hachages), qui permet de "remplacer le contenu d'un tableau ou d'un hachage".
L'idée que la valeur d'une CONSTANTE puisse être modifiée, mais avec un avertissement gênant, est l'une des rares erreurs conceptuelles de Ruby - ces constantes devraient être totalement immuables, ou bien abandonner complètement l'idée de constante. Du point de vue d'un codeur, une constante est déclarative et intentionnelle, un signal aux autres que "cette valeur est vraiment immuable une fois déclarée/assignée".
Mais parfois, une "déclaration évidente" exclut en fait d'autres possibilités utiles futures. Par exemple...
Il y a sont des cas d'utilisation légitimes où la valeur d'une "constante" pourrait vraiment avoir besoin d'être changée : par exemple, recharger ARGV à partir d'une boucle d'invite de type REPL, puis relancer ARGV à travers plus d'appels (ultérieurs) OptionParser.parse ! Donne aux "args de ligne de commande" une toute nouvelle utilité dynamique.
Le problème pratique est le suivant soit avec l'hypothèse présumée que "ARGV doit être une constante", ou dans la méthode d'initialisation d'optparse, qui code en dur l'assignation de ARGV à l'instance var @default_argv pour le traitement ultérieur -- ce tableau (ARGV) devrait vraiment être un paramètre, encourageant la re-parse et la réutilisation, le cas échéant. Un paramétrage approprié, avec un défaut approprié (disons, ARGV) éviterait de devoir changer la "constante" ARGV. Ce ne sont que quelques réflexions d'une valeur de 2¢...
44 votes
La constante dynamique est quelque chose comme l'eau sèche :)
52 votes
Il n'est pas dit que la constante est dynamique. Il est dit que l'affectation est dynamique.