2015-12-13 42 views
7

Quando un file ha il pragma:Come posso descrivere le stringhe mutabili quando le stringhe sono immutabili per impostazione predefinita?

# frozen_string_literal: true 

tutte le stringhe scritte come letterali in quel file sono congelati per impostazione predefinita. Quando voglio che le mie stringhe siano immutabili nel loro insieme, e quindi sto usando il pragma, ma voglio avere un paio di stringhe mutabili, qual è il modo raccomandato per scriverle?

Tutto quello che posso pensare è:

String.new("foo") 
+0

Stavo per dire anche "dup". È solo che questa è una novità interessante e la community non ha ancora una convenzione. – ndn

+0

@ndn Non mi interessa la convenzione. Che cosa è concisione, leggibilità, prestazioni, ecc. – sawa

+0

non c'è una nuova sintassi come "" pippo "se questo è ciò che stai chiedendo. Non puoi essere più conciso di 'Object # dup'. Per quanto riguarda le prestazioni, sarei sorpreso se 'String.new' fosse significativamente migliore. – ndn

risposta

7

avevo perso. Il metodo consigliato è utilizzare il metodo letterale stringa [email protected].

(+"foo").frozen? # => false 
(-"foo").frozen? # => true 
"foo".frozen? # => true 
4

È possibile dup letterale di rendere mutevole:

"foo".dup.frozen? # => false