このエントリーをはてなブックマークに追加

2016年10月22日土曜日

Rubyの定数について

Rubyで定数を宣言する場合、大文字の英字と数字、アンダースコアから構成する識別子を使う。
ただ、これだけでは変数として扱えてしまうので、freezeを使うことで変更不可にする。
  • 配列やハッシュなどのコレクションオブジェクトをフリーズさせる

module Constants
  SERVER_IPS = [
    "192.168.1.10",
    "192.168.1.11",
    "192.168.1.12"
  ].map!(&:freeze).freeze
end
  • 定数が定義されているモジュールごとフリーズさせる

module Constants
  SERVER_IP = "192.168.1.1"
  SERVER_PORT = "8080"
end
Constants.freeze

  • Ruby2.1以降でループ内で文字列リテラルをフリーズさせる(ループ内で毎回文字列オブジェクトが生成されるのを防ぐ)

server_ips.any? { |ip| ip == "192.168.1.1".freeze }

0 件のコメント:

コメントを投稿