rubyの基礎(11)定数

rubyでは大文字で始まる変数は定数の扱いです。

irb> PI = 3.14159265359
=> 3.14159265359
# 地球の円周
irb> 2 * PI * 6371
=> 40030.17359204378
irb> PI = 3
(irb):188: warning: already initialized constant PI
(irb):186: warning: previous definition of PI was here
=> 3

ただ上の例のように書き換えはできます。警告が出ますが。ですが円周率πのような定数が書き換わっては困ります。

メソッドの中では事情が違います。

irb> def calc(r)
irb> PI = 3
irb> 2 * PI * r
irb> end
SyntaxError: (irb):197: dynamic constant assignment
PI = 3
    ^
	from /usr/bin/irb:11:in `<main>'

メソッドの中で定数を書き換えようとすると、定義の段階でエラーとなります。これで円周率πが安全に保たれます。
このようにrubyの定数は処理の中では不変であることが保証されています。

この記事が気に入ったらサポートをしてみませんか?