LoginSignup
4
2

More than 5 years have passed since last update.

Ruby 定数

Last updated at Posted at 2017-07-29

定数は先頭文字が大文字のものである。
ただしRubyの場合は値の変更が可能となっている。

定数の変更が可能
CONST = "定数です"
p CONST

CONST << " 追加"
p CONST
実行結果
"定数です"
"定数です 追加"

普通にできちゃう。
定数に対してfreezeをつけることで変更を防げる。

定数の変更を不可
CONST = "定数です"
p CONST

CONST.freeze

CONST << " 追加"
p CONST
実行結果
"定数です"
in `<main>': can't modify frozen String (RuntimeError)

ただ再代入はできる模様

再代入はできちゃう
CONST = "定数です"
p CONST

CONST.freeze

CONST = "定数です 追加"
p CONST
実行結果
"定数です"
warning: already initialized constant CONST
warning: previous definition of CONST was here
"定数です 追加"

注意されるが再代入が行われる。
これを防ぐにはmoduleにして、moduleごとfreezeを行う

再代入も防ぐ
module Teisuu
  CONST = "定数です"
end
p Teisuu::CONST
Teisuu.freeze

Teisuu::CONST = "定数です 追加"
p Teisuu::CONST
実行結果
"定数です"
in `<main>': can't modify frozen Module (RuntimeError)
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2