🌿 What?

  • 🌱 Rubocop có rule check khai báo frozen_string_literal: true cho từng file, nhưng nó để làm gì?

  • 🌱 frozen_string_literal là má»™t magic comments có từ Ruby 2.3, nó giúp tối ưu bá»™ nhá»› cÅ©ng như cải thiện performance bằng việc cung cấp vùng nhá»› dá»±a theo ná»™i dung cá»§a string(ná»™i dung giống nhau sẽ chung 1 vùng nhá»›), tương tá»± như :symbol. Ngoài ra, sá»­ dụng comment trên cÅ©ng sẽ ngăn chặn việc thay đổi string.

# test.rb
# frozen_string_literal: true 
p 'name'.object_id
p 'name'.object_id
 
str  =  'hello'
str  <<  ' world'
 
p str
> ruby test.rb
60
60
Traceback (most recent call last):
test.rb:6:in `<main>': can't modify frozen String: "hello" (FrozenError)
  • 🌱 Nếu trong file frozen, chúng ta vẫn muốn má»™t string động, có thể khai báo:
str = String.new('hello')
str << ' world'

🌿 Refer