Ruby の `defined?` はどこで定義されていますか?

Ruby の defined? がどこで定義されているのか疑問に思ったことはありませんか? メソッドのように見えるため、ObjectKernelBasicObject、さらには ClassModule など、さまざまな場所を調べようとするかもしれませんが、どの場所でも見つけることができません。まあ、気付くまではそうですが、答えは非常に簡単です。defined? はメソッドではなく、演算子またはキーワードです。

How to use defined??

irb(main):001:0> defined? String
=> "constant"
irb(main):002:0> defined?(String)
=> "constant"

What does defined? return?

irb(main):001:0> defined? 1
=> "expression"
irb(main):002:0> defined? dummy
=> nil
irb(main):003:0> defined? printf
=> "method"
irb(main):004:0> defined? String
=> "constant"
irb(main):005:0> defined? $_
=> "global-variable"
irb(main):006:0> defined? true
=> "true"
irb(main):007:0> defined? false
=> "false"
irb(main):008:0> defined? nil
=> "nil"
irb(main):009:0> defined? RUBY_ENGINE
=> "constant"
irb(main):010:0> defined? (a, b = 1, 2)
=> "assignment"
# ...

参考文献

ruby