Ruby 1.9.3 doesn't have named parameters, but added extra sugar for hashes. So {:key => 'val'}
is equivalent to {key: 'val'}
. What you see there is a hash being passed as parameter.
If you look at the source of the method you pointed, you will see this:
rb_ary_shuffle(int argc, VALUE *argv, VALUE ary)
{
ary = rb_ary_dup(ary);
rb_ary_shuffle_bang(argc, argv, ary);
return ary;
}
and in the shuffle!
method, you can confirm it is a hash by looking at this part:
if (OPTHASH_GIVEN_P(opts)) {
randgen = rb_hash_lookup2(opts, sym_random, randgen);
}