¿Cuál es la función de Ruby que permite “p * 1..10” para imprimir los números 1-10?

StackOverflow https://stackoverflow.com/questions/708403

  •  22-08-2019
  •  | 
  •  

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?

¿Fue útil?

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
scroll top