Estoy teniendo dificultades para comprender lo que hacen los métodos de desplazamiento y desvío de la clase Array en Ruby. ¿Alguien puede ayudarme a entender lo que hacen?¿Qué hace Ruby's Array # shift hacer?
Respuesta
Mirando el Ruby Documentation
Array.shift elimina el primer elemento de la matriz y la devuelve
a = [1,2,3]
puts a.shift
=> 1
puts a
=> [2, 3]
Anular conversión antepone el valor proporcionado a la parte delantera de la matriz, moviéndose todos los otros elementos hasta una
a=%w[b c d]
=> ["b", "c", "d"]
a.unshift("a")
=> ["a", "b", "c", "d"]
Básicamente puedes pensar en cambiar y desviar como operaciones en una cola FIFO –
'' unshift'' fue un descubrimiento, ¡gracias! – dgilperez
@JacoPretorius Huh? 'shift' y' unshift' actúan como una pila FILO, 'push' y' shift' actuarían como una cola FIFO, a menos que esté confundido acerca de algo. –
se agarra el primer elemento, lo elimina de la matriz, y devuelve el elemento de retirada. Básicamente es una forma de tratar una matriz como una pila: shift
es pop, unshift
es push.
El cambio y el desvío de pozo son * similares * a pop y push, excepto que agregan y quitan cosas desde el principio de una matriz, en lugar de desde el final. –
Esta respuesta tiene exactamente el nivel correcto de abstracción. –
@ Alberto: O, en otras palabras, consideran que el frente es la parte superior. No hay ningún requisito para que sea de otra manera. –
Devuelve el primer elemento de la matriz y lo elimina de la matriz, desplazando los elementos hacia atrás un lugar.
Así cambiando [1,2,3,4,5]
vuelve 1
, y establece que la matriz sea [2,3,4,5]
.
Más here.
shift
y unshift
actúa de forma similar a como pop
y push
: que están destinados a utilizar matrices como pilas a las que se puede añadir y eliminar elementos (normalmente uno por vez). La diferencia es sólo que shift
y unshift
añadir/quitar elementos al comienzo de un Array
, en realidad cambio ing todos los demás elementos, mientras que pop
y push
añadir/quitar elementos al final de la Array
, preservando así los índices de otros elementos.
Ejemplos:
# Spacing for clarity:
a = [2, 4, 8] # a => [2, 4, 8]
a.push(16, 32) # a => [2, 4, 8, 16, 32]
a.unshift(0, 1) # a => [0, 1, 2, 4, 8, 16, 32]
a.shift # a => [1, 2, 4, 8, 16, 32]
a.pop # a => [1, 2, 4, 8, 16]
Si tuviera que editar su respuesta para resumir el hilo de mipadi, me gustaría volver a votar. –
Cool. Además, no estoy muy bien informado sobre Ruby, pero si se ejecuta en la JVM, entonces esperaría que el push/pop sea más rápido, ya que no tiene que mover todos esos elementos. –
Votación hacia arriba para la analogía de la pila, pero piense en las tuberías también. Como se supone que somos programadores, también deberíamos pensar que shift es un shift-left y unshift es un shift-right en un array horizontal de izquierda a derecha. – mckenzm
Si usted puede pensar en la matriz como si fuera una cola de los valores para ser procesados, entonces puede tomar el siguiente valor (delante) y "cambio" el otro valuess a ocupar el espacio disponible. unshift devuelve los valores, tal vez no esté listo para procesar algunos de ellos, o permita que algún código posterior los maneje.
- 1. ¿Qué hace shift() en Perl?
- 2. ¿Qué hace? ...: ... ¿hacer?
- 3. Shift todos los índices en array NumPy
- 4. ¿Qué hace :: hacer?
- 5. ¿Qué hace "<%:" hacer?
- 6. Cancelar Rubys Shoes animación
- 7. ¿Qué hace el || operador hacer?
- 8. ¿Qué hace "hacer" aquí? (java)
- 9. Correo de PHP: ¿Qué hace -f hacer?
- 10. MVC básico: ¿Qué hace "modelItem =>" hacer?
- 11. qué hace background: url transparente(); ¿hacer?
- 12. En jQuery, qué hace ...... var myVar = $ ([]); ......¿hacer?
- 13. ¿Qué hace la lista [x :: y] hacer?
- 14. ¿Qué significa preincrementar $ # array?
- 15. ¿Versión de Scala de cada uno de Rubys?
- 16. ¿Qué hace ReliabilityContractAttribute?
- 17. ¿Cómo saber qué tecla SHIFT se presionó?
- 18. ¿Qué significa "Shift: =" en este código VB6?
- 19. ¿Por qué no hay un String # shift()?
- 20. ¿Qué hace numpy.apply_along_axis?
- 21. ¿Por qué hay dos operadores Right Shift y solo un operador Left Shift en Java?
- 22. ¿Qué significa array * string en Ruby?
- 23. ¿Qué hace exactamente parámetro bool hacer en animateWithDuration: animaciones: completado:
- 24. ¿Qué hace "seleccionar ((seleccionar (s), $ | = 1) [0])" hacer en Perl?
- 25. Shift de Java a C++
- 26. BitArray - Shift bits
- 27. ¿Qué hace [:]?
- 28. selección Impedir Shift + Clic
- 29. PHP Shift Shift dando dos respuestas en dos máquinas diferentes
- 30. emacs equivalente a vim shift-h y shift-l
Una vez que se entera de que 'turno/unshift' son como' push/pop' en el otro extremo de la matriz, se puede eliminar mentalmente la 'f' del nombre de los métodos para recordar cuál 'vertederos' y los elementos cuál los 'inserta'. :) – Phrogz
Gracias que realmente ayuda lol. – agentbanks217
¡Uno de los mejores comentarios! Muchas gracias :) – tvdeyen