# Riassegnamento costanti

**URL:** <https://www.ruby-forum.com/t/riassegnamento-costanti/224514>\
**Category:** IT\
**Created:** [November 14, 2012, 7:01pm UTC](https://www.ruby-forum.com/t/riassegnamento-costanti/224514 "2012-11-14T19:01:37Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![aris](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/258eb7/32.png) [@aris](https://www.ruby-forum.com/u/aris)\
**Post date:** [November 14, 2012, 7:01pm UTC](https://www.ruby-forum.com/t/riassegnamento-costanti/224514/1 "2012-11-14T19:01:37Z")

</div>

Ciao ragazzi, vi risulta che ruby debba sempre dare un warning quando si  
riassegna una costante?

ero convinto di s, ma poi ho trovato questo e mi sono stupito del fatto  
che venga modificato il primo array senza nessun tipo di warning

CALLBACK\_PARAMS=%w{ payment\_status payer\_name thx\_id amount memo  
verify\_sign payer\_id qta custom payer\_email p }  
REDIRECT\_PARAMS=CALLBACK\_PARAMS.delete\_if { |p| p.eql? “verify\_sign” }

1.9.3-p286 :003 \> CALLBACK\_PARAMS - REDIRECT\_PARAMS  
=\> []

---

<div class="post-metadata">

**Author:** ![Sante\_R](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/eb9ed0/32.png) [@Sante\_R](https://www.ruby-forum.com/u/Sante_R)\
**Post date:** [November 14, 2012, 7:49pm UTC](https://www.ruby-forum.com/t/riassegnamento-costanti/224514/2 "2012-11-14T19:49:33Z")

</div>

Se ricordo bene, il warning c’e’ quando provi a sostituire l’oggetto che  
fa  
riferimento alla costante con un altro, non quando modifichi lo stato  
dello  
stesso identico oggetto.

Il giorno 14 novembre 2012 19:01, Sante R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

---

<div class="post-metadata">

**Author:** ![Sante\_R](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/eb9ed0/32.png) [@Sante\_R](https://www.ruby-forum.com/u/Sante_R)\
**Post date:** [November 14, 2012, 7:56pm UTC](https://www.ruby-forum.com/t/riassegnamento-costanti/224514/3 "2012-11-14T19:56:44Z")

</div>

PS: Sono stato alquanto criptico, ecco l’esempio aggiornato:

CALLBACK\_PARAMS=%w{ payment\_status payer\_name thx\_id amount memo  
verify\_sign payer\_id qta custom payer\_email p }  
id\_costante = CALLBACK\_PARAMS.object\_id  
REDIRECT\_PARAMS=CALLBACK\_PARAMS.delete\_if { |p| p.eql? “verify\_sign” }  
1.9.3-p286 :003 \> CALLBACK\_PARAMS - REDIRECT\_PARAMS

id\_costante == CALLBACK\_PARAMS.object\_id

restituisce true, si e’ modificato lo stato interno dell’oggetto Array,  
ma e’ sempre lo stesso…il warning c’e’ solo quando si prova a  
riassegnare alla costante un oggetto diverso

---

<div class="post-metadata">

**Author:** ![Sante\_R](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/eb9ed0/32.png) [@Sante\_R](https://www.ruby-forum.com/u/Sante_R)\
**Post date:** [November 14, 2012, 8:14pm UTC](https://www.ruby-forum.com/t/riassegnamento-costanti/224514/4 "2012-11-14T20:14:41Z")

</div>

Il giorno 14/nov/2012, alle ore 19:56, Rocco G.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> restituisce true, si e’ modificato lo stato interno dell’oggetto Array,  
> ma e’ sempre lo stesso…il warning c’e’ solo quando si prova a  
> riassegnare alla costante un oggetto diverso

Sipegazione chiarissima 🙂  
Grazie!

---

<div class="post-metadata">

**Author:** ![Sante\_R](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/eb9ed0/32.png) [@Sante\_R](https://www.ruby-forum.com/u/Sante_R)\
**Post date:** [November 14, 2012, 8:53pm UTC](https://www.ruby-forum.com/t/riassegnamento-costanti/224514/5 "2012-11-14T20:53:50Z")

</div>

2012/11/14 Sante R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

aggiunta: se non vuoi fare modificare l’oggetto puntato da una  
costante, usa #freeze.  
Meno possibilit di errori sempre meglio 🙂

–  
twitter: @riffraff  
blog (en, it): www.riffraff.info [riffraff.blogsome.com](http://riffraff.blogsome.com)  
work: [circleme.com](http://circleme.com)
