2012-08-29 11 views
5

Esto es algo que me apetece hacer ocasionalmente. Digamos que tengo una lista de argumentos. En Lisp, puedo ir comoRuby: ¿cómo empalmar una matriz en una lista estilo Lisp?

`(imaginary-function ,@args) 

para llamar a la función con la matriz cambiada de un elemento al número correcto de argumentos.

¿Hay una funcionalidad similar en Ruby? ¿O acabo de usar un modismo completamente equivocado aquí?

+0

En Lisp eso no es ni una llamada de función, ni una matriz. Es solo una lista con otra lista empalmada. –

Respuesta

9

Sí! Se llama operador splat.

a = [1, 44] 
p(*a) 
+0

'puts (a)' y 'puts (* a)' tienen el mismo resultado – Stefan

+0

Sí, no es un gran ejemplo. Lo cambiaré a "p (* a)". –

+0

Perfecto, esto es exactamente lo que estaba buscando. Parece un poco raro sintácticamente que uses el mismo operador para recolectar (* args) en una función, pero tiene sentido mnemónicamente, supongo. – HaskellMan

3

Este es el operador splat: function(*list)

Cuestiones relacionadas