public Method

Array.first(...)

array.first      obj or nil
array.first(n)  an_array

Returns the first element, or the first n elements, of the array. If the array is empty, the first form returns nil, and the second form returns an empty array.

a = [ "q", "r", "s", "t" ]
a.first    #=> "q"
a.first(1) #=> ["q"]
a.first(3) #=> ["q", "r", "s"]

Source Code

/*
*  call-seq:
*     array.first   ->   obj or nil
*     array.first(n) -> an_array
*
*  Returns the first element, or the first +n+ elements, of the array.
*  If the array is empty, the first form returns <code>nil</code>, and the
*  second form returns an empty array.
*
*     a = [ "q", "r", "s", "t" ]
*     a.first    #=> "q"
*     a.first(1) #=> ["q"]
*     a.first(3) #=> ["q", "r", "s"]
*/

static VALUE
rb_ary_first(argc, argv, ary)
   int argc;
   VALUE *argv;
   VALUE ary;
{
   if (argc == 0) {
       if (RARRAY(ary)->len == 0) return Qnil;
       return RARRAY(ary)->ptr[0];
   }
   else {
       VALUE nv, result;
       long n, i;

       rb_scan_args(argc, argv, "01", &nv);
       n = NUM2LONG(nv);
       if (n > RARRAY(ary)->len) n = RARRAY(ary)->len;
       result = rb_ary_new2(n);
       for (i=0; i<n; i++) {
           rb_ary_push(result, RARRAY(ary)->ptr[i]);
       }
       return result;
   }
}
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.