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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top