0

このメソッドdefined?は、引数として指定された逐語式の結果を返します。たとえば、

defined? foo

foo文字通り定義された変数/メソッドであるかどうかに敏感です。fooが有効な (既存の) 式である文字列として定義されているかどうかに違いはありません。

foo = "Array"

か否か:

foo = "NonExistingConstant"

defined?与えられた引数を1レベル拡張して敏感にすることは可能ですか? つまり、 forfoo = "Array"の場合は を返し"constant"、 forfoo = "NonExistingConstant"の場合は を返す必要がありnilます。もしそうなら、どのように?

4

1 に答える 1

2

定数のみをチェックする必要があるため:

['Array', 'NonExistentClass'].each do |name|
  puts Object.const_defined?(name)
end
# >> true
# >> false
于 2013-06-21T05:34:41.153 に答える