Alguien preguntó sobre el operador de splat ayer, y yo quería ver el código fuente ... ¿estaría escrito en C o en Ruby? ¿Dónde se encontraría?Ruby, Código fuente de Splat?
Respuesta
El operador splat está poco documentado en la documentación básica de Ruby a partir de Ruby 2.4. Sin embargo, es una característica central del lenguaje y el código fuente del operador splat se puede encontrar en vm_eval.c
bajo rb_yield_splat(VALUE values)
.
El unit test para rb_yield_splat
hace que sea más claro lo que está sucediendo:
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
Algunas búsquedas rápidas en Google resultaron ser implementadas en eval.c. Puedes encontrar referencias a "splat" en algunos lugares del archivo, pero no estoy lo suficientemente familiarizado con el funcionamiento interno de Ruby como para entenderlo.
Gracias por eso, Martin. Solo trato de darle sentido al mundo de Ruby. Entonces, básicamente, si se trata de ruby y no de rails, la fuente probablemente no esté en Ruby, lo cual tiene sentido. –
El operador splat es parte del lenguaje básico de ruby, no una función de biblioteca. Se puede usar en cualquier objeto que defina un método #to_ary, pero cuando se usa para recopilar valores múltiples en una sola variable (como en 'a, * b = 1,2,3,4,5') siempre creará un Formación. – rampion
@Rampion, gracias por eso. Así que supongo que mi verdadera pregunta sería: ¿hay alguna "característica de la biblioteca" (para la cual el código fuente está en Ruby) que no necesita un "requerir"? –
- 1. Descargar YouTube con Ruby (código fuente)
- 2. Ruby on Rails código fuente seguridad/ofuscación
- 3. ¿Qué significa un solo splat/asterisk en una lista de argumentos de Ruby?
- 4. Imprimir el código fuente de un bloque de Ruby
- 5. Analizador de código fuente de Ruby (algo así como pylint)
- 6. Cómo autoindent código fuente de Ruby en Vim
- 7. Desenrolle/argumentos splat en Common Lisp
- 8. Viendo el código fuente de una gema
- 9. splat rubí entendimiento en rangos y matrices
- 10. C# .net código fuente
- 11. Java API Código fuente
- 12. Organizador R Fuente Código
- 13. Unix V6 Código fuente
- 14. SyntaxHighlighter v3.0.83 código fuente
- 15. C++ código fuente de vector
- 16. Código fuente PDO de PHP
- 17. repositorios de código fuente múltiple
- 18. Analizador de código fuente Java
- 19. código de Google descargar fuente
- 20. código Java: buscando el código fuente
- 21. Código de Ruby a JAR
- 22. ¿Puedo hacer que Ruby imprima el código fuente de un método dinámico?
- 23. ¿Cómo maneja Ruby 1.9 casos de caracteres en el código fuente?
- 24. Recomiéndame algún código fuente abierto de rieles/ruby que necesite documentación/pruebas escritas
- 25. Agregar imágenes al código fuente
- 26. linux du command código fuente
- 27. Editar código fuente al depurar
- 28. sobre el código fuente jsp
- 29. Descompilar código fuente precompilado ASP.NET
- 30. Código fuente VB6 realmente útil
eso es genial, pero ¿cómo supiste dónde está la fuente? –
Lo [busqué] (https://github.com/ruby/ruby/search?l=C&q=splat&type=&utf8=%E2%9C%93) en el repositorio de Ruby git. Limite la búsqueda a archivos C, luego lea el código fuente hasta que lo encuentre. – anothermh
Wow eso es genial. Gracias. –