Hash table´s

1.- ¿Qué son? ¿Para que sirven? Las hash table´s son "bases de datos" y como cualquier base de datos sirve para almacenar de forma "masiva" información.

2.- Creando y añadiendo/borrando datos a nuestra hash table:

  • Crando una hash: /hmake -s nombre N Nombre hace referencia al nombre con el cual nos referiremos posteriormente a nuestra hash. La N es opcional e indica de cuantos "bloques" sera la hash table´s, el objetivo de esto hacer que la hash sea rápida, aunque si no sabes cuantos datos aproximadamente vas a tener puedes no indicar el parametro, no notaras la diferencia ;)
  • Añadiendo objetos a nuetsra hash: /hadd -smbcuN nombre objeto valor Se añade el nuevo objeto con el valor indicado, ojo en caso de que ya exista el viejo sera "actualizado".
    • -m Este parametro hace que si la hash table indicada no existe, se crea y se añada el objeto con su valor.
    • -uN Tiene el mismo efectos que en las variables (un unset pasados x segundos)
    • -b Si el valor es binario (&binvar) debes de poner este parametro para indicarselo a la hash
  • Borrando objetos de nuestra hash: /hdel -sw nombre objeto La w indica que se trata de una wildcard, es decir, que se trata de un fragmento de la cadena a eliminar, por ello mIRC ira miralo los objetos y el 1º donde encaje la wildcard sera eliminado. OJO con utilizar wildcard demasiado cortas.
  • Cargando y salvando nuestras hash: /hload -sbn nombre y /hsave -sbnoau nombre fichero Se carga o graba, respectivamente, la hash .
    • -b Indica que se cargan o graban hash que contienen &binvar (Es decir, contienen datos binarios)
    • -n Indica que solo debe de cargar o salvar los datos (y los objetos no)
    • -o En caso de que exista el fichero indicado, este es sobreescrito
    • -a En caso de que exista el fichero indicado, se salva al final de este.

Ojo, hload no crea la tabla, solo la carga; para crearla debes de hacer un /make

3.- Recuperando información de nuestra hash table:

  • $hget(Nombre,objetoX) Nos devulve el valor del objetoX
  • $hget(Nombre, objetoX, &binvar) Asigna el valor del objetoX a la &binvar
  • $hget(Nombre,N).item Nos devuelve el objeto que ocupa la posición N dentro de la tabla (Os acordais del /hmake -s nombre N, pues esta es una de sus utilidades). Tb se puede utilizar $hget(Nombre,N).data y nos devuelve el valor del objeto que ocupa la posición N. Si N es 0, devuelve el numero total de líneas
  • $hfind(Nombre,text,N) Nos devuelve el objeto que contiene el texto especificado (N igual que en los tokkens, hace referencia al número del objeto) También se puede utilizar $hfind(Nombre.text,N).data para buscar la cadena entre los valores de los objetos.


4.- Alias para recuperar una hash table completa:

alias Hash {
var %s = 1
while ($hget($1,%s).item) {
echo -s Posicion nº %s --> Objeto: $hget($1,%s).item -- Dato: $hget($1,%s).item
inc %s
}
}


[ Recomiendo ver el ejemplo Detector ('Nick entro antes como') V1.0 ]