38852


`"Array"`という文字列からクラス名としての定数を取得する時に

[code]

    Object.const_get('Array')
    
[/code]

としていたのですが、`defined?`で確認した時に返される値が異なっていました。

[code]

    defined?(Object.const_get('Array'))
    #=> "method"
    defined?(Array)
    #=> "constant"
    
[/code]

これは`Object.const_get`自体の判定をしてしまっているのだと思うのですが、  
クラス名を表す文字列から該当のクラスが定義済みであるかどうかはどう判断すればいいでしょうか？


CC BY-SA 3.0
2017-10-19T03:34:01.717
38849
2017-10-19T04:06:10.353
3271
question
ruby
defined?(Object.const_get('Array')) と defined?(Array) が違う理由について


`Object.const_defined?` を使うのはどうでしょうか。

[code]

    Object.const_defined?(klass) and Object.const_get(klass).class == Class
    
[/code]


CC BY-SA 3.0
2017-10-19T04:06:10.353
38852
2017-10-19T04:06:10.353
76
38849
answer