Ruby `defined?` 在哪裡定義?

有沒有想過 Ruby 的 defined? 在哪裡定義?因為它看起來很像一種方法,所以您最終可能會嘗試檢查許多地方,例如:“Object”、“Kernel”、“BasicObject”,甚至“Class”或“Module”,但卻無法在任何這些地方找到它。好吧,直到你意識到這一點,答案才很簡單: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