Yuto Blog

Yuto Blog

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

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

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

#frozen_string_literal: true がない場合

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

puts text1.object_id == text2.object_id

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

#frozen_string_literal: true がある場合

#frozen_string_literal: true

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

puts text1.object_id == text2.object_id

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

Updated by Yuto at 2022-01-20 23:55
1
Like this article
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.