diff --git a/array.c b/array.c
index 622e17905d..fc7eebd050 100644
--- a/array.c
+++ b/array.c
@@ -2003,39 +2003,6 @@ rb_ary_at(VALUE ary, VALUE pos)
}
#if 0
-/*
- * call-seq:
- * array.first -> object or nil
- * array.first(n) -> new_array
- *
- * Returns elements from +self+; does not modify +self+.
- *
- * When no argument is given, returns the first element:
- *
- * a = [:foo, 'bar', 2]
- * a.first # => :foo
- * a # => [:foo, "bar", 2]
- *
- * If +self+ is empty, returns +nil+.
- *
- * When non-negative \Integer argument +n+ is given,
- * returns the first +n+ elements in a new \Array:
- *
- * a = [:foo, 'bar', 2]
- * a.first(2) # => [:foo, "bar"]
- *
- * If n >= array.size, returns all elements:
- *
- * a = [:foo, 'bar', 2]
- * a.first(50) # => [:foo, "bar", 2]
- *
- * If n == 0 returns an new empty \Array:
- *
- * a = [:foo, 'bar', 2]
- * a.first(0) # []
- *
- * Related: #last.
- */
static VALUE
rb_ary_first(int argc, VALUE *argv, VALUE ary)
{
@@ -2062,40 +2029,6 @@ ary_last(VALUE self)
return (len == 0) ? Qnil : RARRAY_AREF(self, len-1);
}
-/*
- * call-seq:
- * array.last -> object or nil
- * array.last(n) -> new_array
- *
- * Returns elements from +self+; +self+ is not modified.
- *
- * When no argument is given, returns the last element:
- *
- * a = [:foo, 'bar', 2]
- * a.last # => 2
- * a # => [:foo, "bar", 2]
- *
- * If +self+ is empty, returns +nil+.
- *
- * When non-negative \Integer argument +n+ is given,
- * returns the last +n+ elements in a new \Array:
- *
- * a = [:foo, 'bar', 2]
- * a.last(2) # => ["bar", 2]
- *
- * If n >= array.size, returns all elements:
- *
- * a = [:foo, 'bar', 2]
- * a.last(50) # => [:foo, "bar", 2]
- *
- * If n == 0, returns an new empty \Array:
- *
- * a = [:foo, 'bar', 2]
- * a.last(0) # []
- *
- * Related: #first.
- */
-
VALUE
rb_ary_last(int argc, const VALUE *argv, VALUE ary) // used by parse.y
{
diff --git a/array.rb b/array.rb
index 728438f558..358b6a5d79 100644
--- a/array.rb
+++ b/array.rb
@@ -67,6 +67,37 @@ class Array
end
end
+ # call-seq:
+ # array.first -> object or nil
+ # array.first(n) -> new_array
+ #
+ # Returns elements from +self+; does not modify +self+.
+ #
+ # When no argument is given, returns the first element:
+ #
+ # a = [:foo, 'bar', 2]
+ # a.first # => :foo
+ # a # => [:foo, "bar", 2]
+ #
+ # If +self+ is empty, returns +nil+.
+ #
+ # When non-negative \Integer argument +n+ is given,
+ # returns the first +n+ elements in a new \Array:
+ #
+ # a = [:foo, 'bar', 2]
+ # a.first(2) # => [:foo, "bar"]
+ #
+ # If n >= array.size, returns all elements:
+ #
+ # a = [:foo, 'bar', 2]
+ # a.first(50) # => [:foo, "bar", 2]
+ #
+ # If n == 0 returns an new empty \Array:
+ #
+ # a = [:foo, 'bar', 2]
+ # a.first(0) # []
+ #
+ # Related: #last.
def first n = unspecified = true
if Primitive.mandatory_only?
Primitive.attr! :leaf
@@ -80,6 +111,37 @@ class Array
end
end
+ # call-seq:
+ # array.last -> object or nil
+ # array.last(n) -> new_array
+ #
+ # Returns elements from +self+; +self+ is not modified.
+ #
+ # When no argument is given, returns the last element:
+ #
+ # a = [:foo, 'bar', 2]
+ # a.last # => 2
+ # a # => [:foo, "bar", 2]
+ #
+ # If +self+ is empty, returns +nil+.
+ #
+ # When non-negative \Integer argument +n+ is given,
+ # returns the last +n+ elements in a new \Array:
+ #
+ # a = [:foo, 'bar', 2]
+ # a.last(2) # => ["bar", 2]
+ #
+ # If n >= array.size, returns all elements:
+ #
+ # a = [:foo, 'bar', 2]
+ # a.last(50) # => [:foo, "bar", 2]
+ #
+ # If n == 0, returns an new empty \Array:
+ #
+ # a = [:foo, 'bar', 2]
+ # a.last(0) # []
+ #
+ # Related: #first.
def last n = unspecified = true
if Primitive.mandatory_only?
Primitive.attr! :leaf