【问题标题】:Does ruby 1.9.3 have keyword arguments?ruby 1.9.3 有关键字参数吗?
【发布时间】:2013-05-17 19:30:35
【问题描述】:

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

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

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

【问题讨论】:

标签: ruby keyword-argument


【解决方案1】:

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);
    }

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      • 2014-03-28
      • 2011-01-28
      • 2016-12-01
      • 2016-01-15
      • 2018-08-19
      • 1970-01-01
      相关资源
      最近更新 更多