Ruby 2.4.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Moduleクラス > const_defined?

instance method Module#const_defined?

const_defined?(name, inherit = true) -> bool[permalink][rdoc]

モジュールに name で指定される名前の定数が定義されている時真 を返します。

スーパークラスや include したモジュールで定義された定数を検索対象 にするかどうかは第二引数で制御することができます。

[PARAM] name:
String, Symbol で指定される定数名。
[PARAM] inherit:
false を指定するとスーパークラスや include したモジュールで 定義された定数は対象にはなりません。
module Kernel
  FOO = 1
end

# Object は include したモジュールの定数に対しても
# true を返す
p Object.const_defined?(:FOO)   # => true

module Bar
  BAR = 1
end
class Object
  include Bar
end
# ユーザ定義のモジュールに対しても同様
p Object.const_defined?(:BAR)   # => true

class Baz
  include Bar
end
# Object 以外でも同様になった
# 第二引数のデフォルト値が true であるため
p Baz.const_defined?(:BAR)      # => true

# 第二引数を false にした場合
p Baz.const_defined?(:BAR, false)   # => false