Cuộc sống Nhật Bản
Yuto Blog

Rubyで #frozen_string_literal: true というマジックコメントを付ける意味

HSBC - Mở thẻ tín dụng
Nội dung chính

Rubyで開発する時、rubocopを使ったらよく Missing frozen string literal comment と警告され、ファイルの一番上に「#frozen_string_literal: true」を入れることが推進されます。

簡単に説明すると、Ruby 2.3以降では、#frozen_string_literal: trueというマジックコメントを記述した場合、文字列リテラルで生成される文字列は値が変更できないようにfreezeされ、同じ内容の文字列リテラルは同一の文字列オプジェクトを返すようになります。

#frozen_string_literal: true がない場合

Copy ruby
1
2
3
4
text1 = 'Hello world'
text2 = 'Hello world'

puts text1.object_id == text2.object_id

文字列の内容が同じでもオブジェクトが別の為、falseを返します。

#frozen_string_literal: true がある場合

Copy ruby
1
2
3
4
5
6
#frozen_string_literal: true

text1 = 'Hello world'
text2 = 'Hello world'

puts text1.object_id == text2.object_id

同じ内容の文字列は同一の文字列オブジェクトなので、trueを返します。

Updated at 2023-05-09
Nếu bài viết có ích thì các bạn hãy chia sẻ nhé
Rate this article: 4.9/5 (40 ratings)
You didn't rate yet
Le Minh Thien Toan

Tác giả:Yuto Yasunaga

Xin chào các bạn. Mình là kỹ sư IT đang làm việc ở Nhật Bản. Mình tạo blog này để chia sẻ về cuộc sống và những kinh nghiệm trong quá trình học tập và làm việc.
Hy vọng bài viết này sẽ có ích cho bạn.