ปรับปรุงประสิทธิภาพของแอปพลิเคชันโดยไม่จัดสรรพื้นที่ใหม่สำหรับสายอักขระเดียวกันดังนั้นจึงประหยัดเวลาสำหรับการเก็บขยะ อย่างไร? เมื่อคุณตรึงสตริงตัวอักษร (วัตถุสตริง) คุณกำลังบอกให้รูบี้ไม่ให้โปรแกรมใด ๆ ของคุณแก้ไขสตริงตัวอักษร (วัตถุ)
ข้อสังเกตที่ชัดเจนบางอย่างที่ต้องจำไว้
1. ด้วยการตรึงสตริงตัวอักษรคุณจะไม่ได้จัดสรรพื้นที่หน่วยความจำใหม่สำหรับมัน
ตัวอย่าง:
ไม่มีความคิดเห็นเวทมนต์จัดสรรพื้นที่ใหม่สำหรับสายเดียวกัน (สังเกต ID วัตถุที่แตกต่างกันที่พิมพ์)
def hello_id
a = 'hello'
a.object_id
end
puts hello_id #=> 70244568358640
puts hello_id #=> 70244568358500
ทับทิมแสดงความคิดเห็นว่าจัดสรรพื้นที่เพียงครั้งเดียว
# frozen_string_literal: true
def hello_id
a = 'hello'
a.object_id
end
puts hello_id #=> 70244568358640
puts hello_id #=> 70244568358640
2. ด้วยการตรึงสตริงตัวอักษรโปรแกรมของคุณจะยกข้อยกเว้นเมื่อพยายามแก้ไขสตริงตัวอักษร
ตัวอย่าง:
หากไม่มีความคิดเห็นเวทมนต์คุณสามารถแก้ไขตัวอักษรสตริงได้
name = 'Johny'
name << ' Cash'
puts name #=> Johny Cash
ด้วยความคิดเห็นมายากลข้อยกเว้นจะถูกยกขึ้นเมื่อคุณแก้ไขตัวอักษรสตริง
# frozen_string_literal: true
name = 'john'
name << ' cash' #=> `<main>': can't modify frozen String (FrozenError)
puts name
มีอะไรให้เรียนรู้และมีความยืดหยุ่นอยู่เสมอ: