Qualcuno ha chiesto l'operatore di splat ieri, e volevo vedere il codice sorgente ... sarebbe scritto in C o in Ruby? Dove sarebbe stato trovato?Ruby, codice sorgente di Splat?
risposta
L'operatore di splat è scarsamente documentato nella documentazione di base di Ruby a partire da Ruby 2.4. È una caratteristica fondamentale della lingua, tuttavia, e il codice sorgente per l'operatore splat può essere trovato in vm_eval.c
sotto rb_yield_splat(VALUE values)
.
Il unit test per rb_yield_splat
lo 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
Una veloce ricerca di Google ha rivelato che è implementato in eval.c. Puoi trovare riferimenti a "splat" in alcuni punti del file, ma non ho familiarità con il funzionamento interno di Ruby per dare un senso a ciò.
Grazie per questo, Martin. Sto solo cercando di dare un senso al mondo Ruby. Quindi, in sostanza, se è rubino e non rotaie, la fonte probabilmente non è in Ruby, il che ha senso. –
L'operatore splat fa parte del linguaggio core ruby, non una funzione di libreria. Può essere utilizzato su qualsiasi oggetto che definisce un metodo #to_ary, ma quando viene utilizzato per raccogliere più valori in una singola variabile (come in 'a, * b = 1,2,3,4,5') creerà sempre un Array. – rampion
@Rampion, grazie per quello. Quindi immagino che la mia vera domanda sarebbe: ci sono delle "funzionalità di libreria" (per le quali il codice sorgente è in Ruby) che non richiedono un "require?" –
- 1. Ruby Codice sorgente Auto-Formatter
- 2. Stampa del codice sorgente di un blocco Ruby
- 3. Spiegazione di splat
- 4. Perché l'argomento splat in ruby non viene utilizzato sempre?
- 5. Che cosa significa un singolo splat/asterisco in una lista di argomenti Ruby?
- 6. Informazioni sul codice sorgente principale di Rails?
- 7. codice sorgente longpolling di primavera?
- 8. codice LaTeX + sorgente di importazione
- 9. Strumento di annotazione codice sorgente
- 10. Codice sorgente PDO di PHP
- 11. repository di codice sorgente multipli
- 12. Codice sorgente offuscamento
- 13. Codice sorgente Android download
- 14. Debug JBoss codice sorgente
- 15. Codice sorgente SDK Android
- 16. Codice sorgente Inventor App
- 17. C codice sorgente libreria
- 18. sul codice sorgente jsp
- 19. SyntaxHighlighter codice sorgente v3.0.83
- 20. Codice sorgente applicazione sveglia
- 21. Unix V6 Codice sorgente
- 22. con libreria Splat e Xamarin.Mac
- 23. L'operatore double-splat modifica in modo distruttivo l'hash: si tratta di un bug di Ruby?
- 24. srotolare/argomenti splat in Common Lisp
- 25. Codice Java: ricerca del codice sorgente
- 26. TypeScript Codice lingua Visual Studio Codice sorgente
- 27. Codice byte al codice sorgente Java
- 28. compito Rake w/argomenti splat
- 29. Tuple splat/applicare a Rust
- 30. Codice sorgente R. Chiamata funzione
è grandioso, ma come facevi a sapere dove si trova la fonte? –
I [cercato per questo] (https://github.com/ruby/ruby/search?l=C&q=splat&type=&utf8=%E2%9C%93) nel repository git Ruby. Limita la ricerca ai file C, quindi leggi il codice sorgente finché non lo trovi. – anothermh
Wow è grandioso. Grazie. –