2015-12-13 11 views
7

Gdy plik ma pragmy:Jak mogę opisać zmienne łańcuchy, gdy łańcuchy są domyślnie niezmienne?

# frozen_string_literal: true 

wszystkie ciągi napisane jako literały w tym pliku są zamrożone domyślnie. Kiedy chcę, aby moje struny były niezmienne ogólnie, a zatem używam pragmy, ale chcę mieć kilka zmiennych łańcuchów, jaki jest zalecany sposób ich napisania?

Wszystko, co mogę myśleć to:

String.new("foo") 
+0

Chciał tylko powiedzieć "dup" też. Chodzi o to, że jest to nowy, fajny materiał, a społeczność nie ma jeszcze konwencji. – ndn

+0

@Na razie nie obchodzi mnie konwencja. Liczy się zwięzłość, czytelność, wydajność itp. – sawa

+0

nie ma nowej składni takiej jak '' foo 'u' jeśli o to pytasz. Nie można uzyskać bardziej zwięzłego niż "Object # dup". Jeśli chodzi o wydajność, byłbym zaskoczony, gdyby 'String.new' był znacząco lepszy. – ndn

Odpowiedz

7

ja go ominęło. Zalecanym sposobem jest użycie literalnego ciągu znaków metody [email protected].

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

Można dup dosłowne aby zmienne:

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