Nó cải thiện hiệu suất ứng dụng bằng cách không phân bổ không gian mới cho cùng một chuỗi, do đó cũng tiết kiệm thời gian cho các công việc thu gom rác. Làm sao? khi bạn đóng băng một chuỗi ký tự (đối tượng chuỗi), bạn đang nói với Ruby rằng đừng để bất kỳ chương trình nào của bạn sửa đổi chuỗi ký tự (đối tượng).
Một số quan sát rõ ràng để ghi nhớ.
1. Bằng cách đóng băng chuỗi ký tự, bạn không phân bổ không gian bộ nhớ mới cho nó.
Thí dụ:
Không có nhận xét ma thuật phân bổ không gian mới cho cùng một chuỗi (Quan sát các ID đối tượng khác nhau được in)
def hello_id
a = 'hello'
a.object_id
end
puts hello_id #=> 70244568358640
puts hello_id #=> 70244568358500
Với nhận xét ma thuật , ruby chỉ phân bổ không gian một lần
# frozen_string_literal: true
def hello_id
a = 'hello'
a.object_id
end
puts hello_id #=> 70244568358640
puts hello_id #=> 70244568358640
2. Bằng cách đóng băng chuỗi ký tự, chương trình của bạn sẽ đưa ra một ngoại lệ khi cố gắng sửa đổi chuỗi ký tự.
Thí dụ:
Nếu không có bình luận ma thuật , bạn có thể sửa đổi chuỗi ký tự.
name = 'Johny'
name << ' Cash'
puts name #=> Johny Cash
Với nhận xét ma thuật , một ngoại lệ sẽ được nêu ra khi bạn sửa đổi chuỗi ký tự
# frozen_string_literal: true
name = 'john'
name << ' cash' #=> `<main>': can't modify frozen String (FrozenError)
puts name
Luôn có nhiều thứ để học và linh hoạt: