¿Cuál es la función de Ruby que permite “p * 1..10” para imprimir los números 1-10?
Pregunta
require 'pp'
p *1..10
Esto muestra 1-10. ¿Por qué es esto tan concisa? Y lo que más se puede hacer con él?
Solución
Es el operador "del splat". Se puede utilizar para explotar arrays y rangos y recoger valores durante la asignación.
Aquí los valores en una asignación se recogen:
a, *b = 1,2,3,4
=> a = 1
b = [2,3,4]
En este ejemplo, los valores de la matriz interior (la [3,4]
uno) se explota y se recogió para la matriz que contiene:
a = [1,2, *[3,4]]
=> a = [1,2,3,4]
Puede definir funciones que recogen los argumentos en un array:
def foo(*args)
p args
end
foo(1,2,"three",4)
=> [1,2,"three",4]
Otros consejos
Bueno:
- importaciones
require pp
la funcionalidad de impresión legible -
p
es un método de impresión legible con varargs, que pretty-grabados cada argumento -
*
significa "expandir el argumento en varargs" en lugar de tratarla como un solo argumento - 1..10 es sintaxis de la secuencia gama en Ruby
¿Eso explica de manera adecuada? Si no es así, indique los detalles sobre qué bit es confuso.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow