Rubyの定数(Constant)とは?値を固定するための書き方と使い方
Rubyにおける定数(Constant)は、変更しない予定の値を保持するための変数です。
他の変数とは異なり、すべて大文字で名前を定義するというルールがあります。
定数の基本
TAX_RATE = 0.1
puts TAX_RATE # → 0.1
TAX_RATE
のように、英字の大文字から始まる名前が定数として扱われます。
Rubyでは定数も実際には変更できますが、変更しようとすると警告が出ます。
定数の再代入について
PI = 3.14
PI = 3.1415 # → warning: already initialized constant PI
このように、定数に値を再代入すると実行はできるものの警告(warning)が表示されます。
「定数は変えないもの」として設計するのが前提です。
定数のスコープ(有効範囲)
GREETING = "こんにちは"
class Hello
def self.say
puts GREETING
end
end
Hello.say # → こんにちは
定数は定義されたスコープ内で有効ですが、外部の定数も参照可能です。
クラス内での定数
class Circle
PI = 3.14
def self.area(radius)
PI * radius * radius
end
end
puts Circle.area(5) # → 78.5
このように、クラスやモジュール内でも定数を定義できます。
呼び出すときは クラス名::定数名
でアクセスできます。
::演算子でアクセスする
module Config
VERSION = "1.0"
end
puts Config::VERSION # → 1.0
定数は ::(スコープ演算子) を使ってモジュールやクラスからアクセスできます。
定数と大文字の変数の違い
Rubyでは「大文字で始まる変数」はすべて定数とみなされます。
一度代入された値を原則変更しない前提で使う点が、普通の変数との最大の違いです。
定数の使いどころ
- 税率や利率など、変わらない値の管理
- 設定値、バージョン番号などの管理
- 複数のクラスやモジュールで共通利用する値
定数の列挙(Module.constants)
module MyApp
NAME = "ツール"
VERSION = "2.0"
end
puts MyApp.constants.inspect
# → [:NAME, :VERSION]
モジュールやクラスに定義された定数は constants
メソッドで一覧取得できます。
まとめ
Rubyの定数(Constant)は、変更しない値を明示するための仕組みです。
全て大文字
で定義され、スコープ演算子 ::
を使って参照できます。
再代入は可能ですが警告が出るため非推奨です。
「変わらない値には定数を使う」ことを習慣にして、より安全で可読性の高いコードを目指しましょう!