aboutsummaryrefslogtreecommitdiffstats
path: root/kernel.rb
diff options
context:
space:
mode:
authorS.H <gamelinks007@gmail.com>2020-03-17 19:37:07 +0900
committerGitHub <noreply@github.com>2020-03-17 19:37:07 +0900
commit290d608637e37323bb6eeda1b1466519f16308a5 (patch)
treea15dfc4dd8299b936999e8ddc3c5f70729858a71 /kernel.rb
parentd514ba8e17106c6d159c3902ac5456d6269731f8 (diff)
downloadruby-290d608637e37323bb6eeda1b1466519f16308a5.tar.gz
support builtin for Kernel#clone
Diffstat (limited to 'kernel.rb')
-rw-r--r--kernel.rb29
1 files changed, 29 insertions, 0 deletions
diff --git a/kernel.rb b/kernel.rb
new file mode 100644
index 0000000000..46d9438f85
--- /dev/null
+++ b/kernel.rb
@@ -0,0 +1,29 @@
+module Kernel
+ #
+ # call-seq:
+ # obj.clone(freeze: true) -> an_object
+ #
+ # Produces a shallow copy of <i>obj</i>---the instance variables of
+ # <i>obj</i> are copied, but not the objects they reference.
+ # #clone copies the frozen (unless +:freeze+ keyword argument is
+ # given with a false value) state of <i>obj</i>. See
+ # also the discussion under Object#dup.
+ #
+ # class Klass
+ # attr_accessor :str
+ # end
+ # s1 = Klass.new #=> #<Klass:0x401b3a38>
+ # s1.str = "Hello" #=> "Hello"
+ # s2 = s1.clone #=> #<Klass:0x401b3998 @str="Hello">
+ # s2.str[1,4] = "i" #=> "i"
+ # s1.inspect #=> "#<Klass:0x401b3a38 @str=\"Hi\">"
+ # s2.inspect #=> "#<Klass:0x401b3998 @str=\"Hi\">"
+ #
+ # 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: true)
+ __builtin_rb_obj_clone2(freeze)
+ end
+end