Complex
can refer to either the Complex
class, or to the Complex
method defined in Kernel:
Object.const_get(:Complex) #=> Complex
Object.method(:Complex) #=> #<Method: Class(Kernel)#Complex>
The latter is called a global method (or global function). Ruby defines these methods in Kernel
as both, private instance methods:
Kernel.private_instance_methods.grep /^[A-Z]/
#=> [:Integer, :Float, :String, :Array, :Hash, :Rational, :Complex]
and singleton methods:
Kernel.singleton_methods.grep /^[A-Z]/
#=> [:Integer, :Float, :String, :Array, :Hash, :Rational, :Complex]
Just like any other method in Kernel:
These methods are called without a receiver and thus can be called in functional form
You can use module_function
to add your own global method to Kernel
:
class Thing
end
module Kernel
module_function
def Thing
Thing.new
end
end
Thing #=> Thing <- Thing class
Thing() #=> #<Thing:0x007f8af4a96ec0> <- Kernel#Thing
Kernel.Thing() #=> #<Thing:0x007fc111238280> <- Kernel::Thing
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…