Есть ли в 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);
}
Нет. Это хеш. Ваш последний вопрос не определен из-за провала предположения.