四色夜空

高知での日常を綴ります

#frozen_string_literal: trueについて

「#frozen_string_literal: true」をファイルの先頭に追加すると、文字列が凍ります。実際に、確かめてみましょう。

#frozen_string_literal: true

#frozen_string_literal: true

str = 'nagano'
pp str.frozen? # true

#frozen_string_literal: false

#frozen_string_literal: false

str = 'nagano'
pp str.frozen? # false

何も指定しない

str = 'nagano'
pp str.frozen? # false

Rubyの===について

docs.ruby-lang.org

上記を読む限り、===は左辺オブジェクトに対しての所属性を加味した定義になっているらしい。例えば、RangeとIntegerの比較が分かりやすいだろう。

> irb
irb(main):001:0> (1..11) == 2 
=> false
irb(main):002:0> (1..11) === 2 
=> true
irb(main):003:0> 2 == (1..11)
=> false
irb(main):004:0> 2 === (1..11)
=> false