Ruby on Railsでのコーディングの際、frozen_string_literal: true
というコードが先頭に実装されている場面をよく見かけ、なんだろう?と思い調べてみました。
備忘録としてこちらに残しておきます。
コード
ruby
frozen_string_literal: true
frozen_string_literal: trueって何?
- このコード
frozen_string_literal: true
は、Rubyファイルの先頭に書かれるマジックコメントの一つである。 - このマジックコメントがあると、そのファイル内で定義された文字列リテラル(
" "
や' '
で囲まれた文字列)は全て凍結される。つまり、それらの文字列は不変になり、後から変更できなくなる。 - なぜこんなことをするのかというと、処理の高速化やメモリの節約につながるから。文字列の変更が頻繁に行われると、その都度新しい文字列オブジェクトが生成されてメモリを消費する。しかし、文字列を凍結してしまえば、その心配がなくなる。
その他、参考になった記事の引用
#frozen_string_literal: true がある場合
text1 = 'Hello world'
text2 = 'Hello world'
puts text1.object_id == text2.object_id
引用:Rubyで #frozen_string_literal: true というマジックコメントを付ける意味
その他、参考サイト