2013-05-17 10 views
7

Cała dokumentacja, którą mogę znaleźć, mówi, że argumenty słów kluczowych nie zostały wprowadzone do czasu Ruby 2.0.Czy ruby ​​1.9.3 mają argumenty dotyczące słów kluczowych?

Ale Array # Shuffle wygląda to zajmuje kluczowego argumentu o nazwie 'przypadkowy': http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-shuffle

Czy ten argument słów kluczowych? Jeśli nie, co to jest? Jakie inne zastosowania argumentów słów kluczowych znajdują się w rubinach 1.9.3?

+1

http://brainspec.com/blog/2012/10/08/keyword-arguments-ruby-2-0/ ma kilka przykładów tego, co się tutaj dzieje. – Puhlze

Odpowiedz

5

Ruby 1.9.3 nie ma nazwanych parametrów, ale dodaje dodatkowy cukier do skrótów. Tak więc {:key => 'val'} jest odpowiednikiem {key: 'val'}. To, co widzisz, jest hasłem przekazanym jako parametr.

Jeśli spojrzeć na źródło metody pan zauważył, widać to:

rb_ary_shuffle(int argc, VALUE *argv, VALUE ary) 
{ 
    ary = rb_ary_dup(ary); 
    rb_ary_shuffle_bang(argc, argv, ary); 
    return ary; 
} 

iw sposobie shuffle!, można go potwierdzić to hash patrząc na tej części:

if (OPTHASH_GIVEN_P(opts)) { 
     randgen = rb_hash_lookup2(opts, sym_random, randgen); 
    } 
4

Nie, nie jest. To jest hash. Twoje ostatnie pytanie jest niezdefiniowane z powodu niepowodzenia założenia.

Powiązane problemy