我能找到的所有文档都说直到Ruby 2.0才引入关键字参数。
但Array #shuffle看起来像是一个名为'random'的关键字参数:http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-shuffle
这是关键字参数吗?如果没有,那是什么?关键字参数的其他用途是什么?在ruby 1.9.3中?
答案 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);
}