module Kernel # # call-seq: # obj.class -> class # # Returns the class of obj. This method must always be called # with an explicit receiver, as #class is also a reserved word in # Ruby. # # 1.class #=> Integer # self.class #=> Object #-- # Equivalent to \c Object\#class in Ruby. # # Returns the class of \c obj, skipping singleton classes or module inclusions. #++ # def class Primitive.attr! 'inline' Primitive.cexpr! 'rb_obj_class(self)' end # # call-seq: # obj.clone(freeze: nil) -> an_object # # Produces a shallow copy of obj---the instance variables of # obj are copied, but not the objects they reference. # #clone copies the frozen value state of obj, unless the # +:freeze+ keyword argument is given with a false or true value. # See also the discussion under Object#dup. # # class Klass # attr_accessor :str # end # s1 = Klass.new #=> # # s1.str = "Hello" #=> "Hello" # s2 = s1.clone #=> # # s2.str[1,4] = "i" #=> "i" # s1.inspect #=> "#" # s2.inspect #=> "#" # # This method may have class-specific behavior. If so, that # behavior will be documented under the #+initialize_copy+ method of # the class. # def clone(freeze: nil) Primitive.rb_obj_clone2(freeze) end module_function # # call-seq: # Float(arg, exception: true) -> float or nil # # Returns arg converted to a float. Numeric types are # converted directly, and with exception to String and # nil the rest are converted using # arg.to_f. Converting a String with invalid # characters will result in a ArgumentError. Converting # nil generates a TypeError. Exceptions can be # suppressed by passing exception: false. # # Float(1) #=> 1.0 # Float("123.456") #=> 123.456 # Float("123.0_badstring") #=> ArgumentError: invalid value for Float(): "123.0_badstring" # Float(nil) #=> TypeError: can't convert nil into Float # Float("123.0_badstring", exception: false) #=> nil # def Float(arg, exception: true) Primitive.rb_f_float(arg, exception) end end