05. Vim: listas I

Publicado por

Las listas, también llamadas arreglos en otros lenguajes (sobre todo de scripting), son colecciones ordenadas de elementos, los cuales no necesariamente deben ser del mismo tipo, de hecho cada elemento en la lista puede ser una expresión de cualquier tipo, por lo que no hay limitante en la variedad de tipos de dato que se puede almacenar en las listas.

:let lista0 = []  " Esto nos crea una lista vacía
:let lista1 = [0,1,2,3,4,5,6,7]
:let lista2 = ['hola', 3.141592, lista1, 35 / lista1[-1]]

Cada uno de estos elementos puede ser alcanzado mediante el índice que ocupa al interior de la lista. En una lista, los índices son expresiones de tipo entero, donde la posición cero indica el primer elemento de la lista, quiero recalcar el hecho de que los índices son expresiones, puesto que ello nos permite hacer cosas un poco más interesantes. Un ejemplo sencillo aunque ilustrativo es, por ejemplo obtener el elemento en medio de la lista:

:echo lista1[0]
0
:echo lista1[len(lista1) / 2]
4

Al igual que en otros lenguajes (supongo que lo notaste en uno de los ejemplos anteriores), un índice negativo, nos permite acceder a los últimos elementos de la lista, siendo -1 el último, -2 el penúltimo y así sucesivamente:

:echo lista2[-1]
5
:echo lista1[-2]
6

De igual manera, dado que las listas son estructuras mutables, es posible modificar sus elementos; esto se hace mediante una simple asignación.

:let lista2[-1] = 'codingornot.com'
:echo lista2
:let lista2 = ['hola', 3.141592, [0, 1, 2, 3, 4, 5, 6, 7], 'codingornot.com']

Es posible seleccionar un rango de índices a la vez, lo cual se conoce como sublistas o slices en otros lenguajes:

echo lista2[1:3]
[3.141592, [0, 1, 2, 3, 4, 5, 6, 7]]

A final de cuentas, cuando se manipulan listas a través de los índices de sus elementos, siempre está el riesgo de querer obtener elementos que no están en la lista, utilizando índices fuera del rango definido.

Índice fuera de rango
Índice fuera de rango

Para evitarlo, Vim incluye una función para obtener elementos de manera segura: get(). Al utilizar esta función, en caso de que el elemento solicitado no esté en la lista, se devuelve el valor especificado (o 0 por defecto):

Utilizando la función get()
Utilizando la función get()

Espero que esta nota te ayude a explotar las listas dentro de tus scripts de Vim, pues son un recurso poderoso. Por supuesto, la función get() no es la única disponible para manipular listas, Vim ofrece rutinas para agregar, filtrar y ordenar elementos pero me parece que eso es tema para una nota aparte, la cual no tardará mucho en llegar. ¡Hasta entonces!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *