module Kernel # # 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) __builtin_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) __builtin_rb_f_float(arg, exception) end end