ホーム 技術ログ

Rubyのfrozen_string_literalを理解する

2019年10月15日

Railsのソースを見てたら下記のようなコードを見つけた。

# frozen_string_literal: true

これは一体なんなんだろうかと感じググって調べてみたらわかったので今日はこの # frozen_string_literal: true について書き残しておく。

ミュータブルとイミュータブル

そもそも変数にはミュータブルとイミュータブルな変数がある。これは、変数の中の値が変更可能か、もしくは不可能かの違いである。Rubyで例えると、以下のようなバージョンの場合、以下のように文字列を変更することができる。つまり、これはミュータブルな値と言える。

# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
str = "a"
=> "a"
str << "bc"
=> "abc"

しかし、仮に下記のように変数をイミュータブル(変更できない)な値に変えることがRubyではできる。.freeze をすることで、文字列の変数をイミュータブル(変更できない)な値に変えることができた。

str = "a".freeze
=> "a"
str << "bc"
Traceback (most recent call last):
        1: from (irb):12
FrozenError (can't modify frozen String)

結論

結論として、Railsのファイルの先頭に

# frozen_string_literal: true

があるときは、ファイル全体の文字列が frozenされると認識して良い。つまり、変更できな文字列が毎度定義されるということになる。

備考

ちなみに、文字列の変更と代入は全く別物でイミュータブルな変数に新しい値を代入して初期化することは可能である。それらは再代入できない値「定数」とは全く別物なのである。

Pocket
LinkedIn にシェア

エンジニアにおすすめできる本

Card image cap
リーダブルコード

より良いコードを書くためのシンプルで実践的なテクニック

Card image cap
Webを支える技術

HTTP,URI,HTML,そしてREST

Card image cap
誰でもPythonで作れる

儲かるAIとソフトウェアの作り方

Card image cap
プログラマが知るべき97のこと

現場で使える実践哲学のマスターピース

Card image cap
情熱プログラマー

時代を超えて。ソフトウェア開発者の幸せな生き方

Card image cap
アジャイルサムライ

プログラミング達人開発者への道

Card image cap
Rubyを作った男 まつもとゆきひろ

コードの世界 スーパー・プログラマになる14の思考法

ご提供 sponsor
 

Meee!(ミー)は、ビジネスからプライベート利用まで、個人のスキルを気軽に売り買いできるスキルマーケットです。カテゴリや居住地から、検索することが可能です。

 

ランゲージエクスチェンジは、ネイティブスピーカーと気軽にマッチングできる言語交換プラットフォームです。あなたの地元に住む外国人を探したり、留学や海外移住の前に、現地のネイティブスピーカーと繋がることもできます!

宣伝
 

りょすけトークchは、仕事や私生活をより豊にするYouTubeチャンネルです。文献(本、映画、論文)から役に立つ情報をまとめ、生涯にわたり役に立つ哲学をお届けしています。是非、チャンネル登録してみてね

-ホーム, 技術ログ
-, , , , ,

Copyright© offブログ! , 2021 All Rights Reserved Powered by AFFINGER5.