我能找到的所有文档都说,直到 Ruby 2.0 才引入关键字参数。
但是 Array#shuffle 看起来需要一个名为“随机”的关键字参数:http ://www.ruby-doc.org/core-1.9.3/Array.html#method-i-shuffle
这是关键字参数吗?如果不是,那是什么?ruby 1.9.3 中关键字参数的其他用途是什么?
我能找到的所有文档都说,直到 Ruby 2.0 才引入关键字参数。
但是 Array#shuffle 看起来需要一个名为“随机”的关键字参数:http ://www.ruby-doc.org/core-1.9.3/Array.html#method-i-shuffle
这是关键字参数吗?如果不是,那是什么?ruby 1.9.3 中关键字参数的其他用途是什么?
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);
}
不它不是。这是一个哈希。由于预设失败,您的最后一个问题未定义。