Por favor, alguien podría explicar qué significa un objeto de rango de 2..-1
.¿Qué significa un rango de 2 ..- 1? (Ruby koans about_arrays.rb)
koanes Ruby tiene lo siguiente en about_arrays.rb:
def test_slicing_with_ranges
array = [:peanut, :butter, :and, :jelly]
assert_equal [:peanut, :butter, :and], array[0..2]
assert_equal [:peanut, :butter], array[0...2]
assert_equal [:and, :jelly], array[2..-1]
end
La siguiente página web (que se encuentra de otra respuesta) explica cómo funcionan los rangos con rebanar: Gary Wright, string/array slices A partir de este, entiendo por qué la división da la responde que sí. Lo que no entiendo es a qué rango se refiere el objeto rango. Para un rango normal, lo que puedo hacer:
(1..3).each { |x| puts(x) }
que da el siguiente resultado cuando se ejecuta en el IRB:
1
2
3
=> 1..3e
Sin embargo, (2..-1).each { |x| puts(x) }
da:
=> 2..-1
Entonces, ¿qué hace la gama (2..-1)
significa?
Gracias @DragoonWraith. Tal vez estoy pensando en el objeto rango incorrectamente. De su respuesta, es un rango con un inicio de 2 (tercer elemento) y un final de -1 (último elemento). Supongo que lo que me confunde es qué significa esto fuera del contexto de la división: qué números están 'entre' el 2 y -1; ¿por qué '' (2 ..- 1) .each' no imprime nada? – Will
@Will: solo tiene tres elementos en su matriz, por lo que no hay nada entre '2' y el último; '2' * es * el último. Es por eso que no estás viendo nada. Si intentas con una matriz más grande, deberías ver las cosas. – KRyan
"qué números son 'entre' el 2 y -1" - Ninguno. "¿Por qué no (2 ..- 1) cada uno imprime algo?" - Es por eso ;-) –