2015-12-13 24 views
7

: bu dosyada hazır bilgi olarak yazılmıştırnasıl değişken dizeleri tarif edebilir? Bir dosya pragma sahiptir

# frozen_string_literal: true 

bütün dizeleri varsayılan olarak dondurulur. Ne zaman dizeleri genel değişmez olmak istiyorum ve bu nedenle pragma kullanıyorum, ama değişken dizeleri bir çift sahip olmak istiyorum, onları yazmak için önerilen yolu nedir?

Aklıma gelen tüm

geçerli: Bunu kesilebilir yapmak değişmezi dup olabilir

String.new("foo") 
+0

sadece çok dup' 'diyecektim oldu. Sadece bu havalı yeni şeyler ve toplumun henüz bir kongre yok. Ben kongre umurumda değil – ndn

+0

@ndn. Konjonktür, okunabilirlik, performans, vb. Ne anlama gelir? – sawa

+0

'' foo '' gibi yeni bir sözdizimi yoktur. Nesne # dup 'den daha kısa bir özeti olamaz. Performansa gelince, String.new'in anlamlı derecede daha iyi olması beni şaşırtacaktır. – ndn

cevap

7

onu kaçırmıştı. önerilen yol literal [email protected] yöntem dize kullanmaktır.

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

:

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