Domanda
Qualcuno ha chiesto l'operatore splat ieri, e ho voluto vedere il codice sorgente ... vorrei che essere scritto in C o in Ruby? Dove sarebbe essere trovato?
Soluzione
L'operatore splat è scarsamente documentata nella documentazione principale rubino come di Ruby 2.4. Si tratta di una caratteristica fondamentale del linguaggio, però, e il codice sorgente per l'operatore splat può essere trovato in vm_eval.c
in rb_yield_splat(VALUE values)
.
Il unit test per rb_yield_splat
rende più chiaro ciò che sta accadendo:
it "yields with passed array's contents" do
ret = nil
@s.rb_yield_splat([1, 2]) { |x, y| ret = x + y }
ret.should == 3
end
Altri suggerimenti
Un rapido Google che cerca alzato che è implementato in eval. c . È possibile trovare i riferimenti a "splat" in pochi luoghi del file, ma non sono abbastanza familiarità con il funzionamento interno di Ruby per dare un senso di esso.