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