ruby 1.9.3是否有关键字参数?

时间:2013-05-17 19:30:36

标签: ruby keyword-argument

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

但Array #shuffle看起来像是一个名为'random'的关键字参数:http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-shuffle

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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);
    }