定数を使おう
プログラムでは、変わらない値を扱うことがあります。このレッスンでは、変数とは異なり値が変わらないことを示す「定数」の使い方を学びます。
定数とは
定数とは、一度設定したら変更しない値を格納するためのものです。変数と似ていますが、定数は「この値は変わらない」ということを明示するために使います。
TAX_RATE = 0.1 puts TAX_RATE # => 0.1
上の例では、TAX_RATE という定数に 0.1(消費税率 10%)を格納しています。消費税率のように、プログラム全体で固定の値として使いたいものは定数に入れます。
定数の定義
定数を定義するには、大文字で始まる名前を使います。Ruby では、大文字で始まる名前は定数として扱われます。
MAX_COUNT = 100 puts MAX_COUNT # => 100
複数の単語をつなげる場合は、単語の間をアンダースコア(_)で区切ります。すべて大文字で書くのが一般的です。
# よく使われる書き方 TAX_RATE = 0.1 MAX_RETRY_COUNT = 3 DEFAULT_NAME = "ゲスト"
変数との違い
変数と定数の主な違いは、「値を変更することを想定しているかどうか」です。
変数は値を自由に変更できる
変数は、後から別の値を代入しても問題ありません。
color = "赤" puts color # => 赤 color = "青" puts color # => 青
定数は変更しないことを前提とする
定数は、一度設定した値を変更しないことを前提としています。
PI = 3.14 puts PI # => 3.14
円周率(PI)のように、プログラムの途中で変わることがない値は定数に入れます。
定数に再代入するとどうなるか
定数に再代入しようとすると、Ruby は警告を出します。
TAX_RATE = 0.1 TAX_RATE = 0.08 # => warning: already initialized constant TAX_RATE
ここで重要なのは、エラーではなく警告という点です。プログラムは停止せず、実行は続きます。ただし、定数の値を変更するのは意図しない動作の原因になるため、避けるべきです。
定数は「変更しない値」として使うことで、コードの意図が明確になります。
まとめ
- 定数は変わらない値を格納するためのもの
- 定数名は大文字で始める(慣習としてすべて大文字で書く)
- 複数の単語はアンダースコア(
_)で区切る - 定数に再代入すると警告が出る(エラーではない)
演習に挑戦