7

我能找到的所有文档都说,直到 Ruby 2.0 才引入关键字参数。

但是 Array#shuffle 看起来需要一个名为“随机”的关键字参数:http ://www.ruby-doc.org/core-1.9.3/Array.html#method-i-shuffle

这是关键字参数吗?如果不是,那是什么?ruby 1.9.3 中关键字参数的其他用途是什么?

4

2 回答 2

5

Ruby 1.9.3 没有命名参数,但为哈希添加了额外的糖。所以{:key => 'val'}等价于{key: 'val'}。你看到有一个哈希作为参数传递。

如果您查看您指出的方法的来源,您会看到:

rb_ary_shuffle(int argc, VALUE *argv, VALUE ary)
{
    ary = rb_ary_dup(ary);
    rb_ary_shuffle_bang(argc, argv, ary);
    return ary;
}

在该shuffle!方法中,您可以通过查看这部分来确认它是一个哈希:

 if (OPTHASH_GIVEN_P(opts)) {
        randgen = rb_hash_lookup2(opts, sym_random, randgen);
    }
于 2013-05-17T19:39:42.897 回答
5

不它不是。这是一个哈希。由于预设失败,您的最后一个问题未定义。

于 2013-05-17T19:36:12.893 回答