Есть ли в ruby ​​1.9.3 аргументы для ключевых слов?

Вся документация, которую я могу найти, говорит, что аргументы ключевых слов не были представлены до Ruby 2.0.

Но Array#shuffle выглядит так, как будто он принимает аргумент с ключевым словом "random": http://www.ruby-doc.org/core-1.9.3/Array.html

Это ключевой аргумент? Если нет, то что это? Какие другие варианты использования ключевых аргументов в ruby ​​1.9.3?

2 ответа

Решение

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

Нет. Это хеш. Ваш последний вопрос не определен из-за провала предположения.

Другие вопросы по тегам