> Tutorial de LeekScript
Esta página solo es válida para LS1.0, en LS1.1 las clases se pueden usar directamente: Classes and Objects
En este artículo, crearemos pseudo OOP (Programación Orientada a Objetos), ya que LeekScript no es un lenguaje orientado a objetos. Primero, presentaré la noción de OOP, luego explicaré cómo funciona el alcance variable. Para no ser demasiado teórico, vamos a programar una estructura llamada "Binary Search Tree", es una estructura optimizada para la inserción y búsqueda ordenada.
Esta noción es muy importante si empiezas a interesarte por otros lenguajes como C (++/#), PHP, Java, etc. Es una nueva forma de construir sus programas. Ella presenta objetos. Seguro que sabes lo que es en la vida cotidiana, es algo transformable/manipulable, pero en programación llamamos "objeto" a una estructura formada por variables y funciones llamadas '''atributos y métodos''. Pongamos el ejemplo de un coche, se caracteriza por una velocidad, una aceleración (tampoco entremos en detalles) así como acciones como girar, acelerar, frenar… Así es como podríamos representar nuestro coche:
Esto permite un código estructurado y limpio. Pero también para simplificar el uso de acciones compuestas por instrucciones complejas que estarán ocultas para el usuario. Otra cosa muy importante en OOP es el principio de encapsulación... Todos los atributos y métodos no tienen que ser manipulados por el usuario que podría "romper" el objeto si no verifica tal y cual cosas. Imaginemos que el usuario modifica la velocidad de nuestro coche durante el juego y no tiene en cuenta la inercia ni nada más, el coche se comportaría de forma extraña, e incluso esto es solo una modificación menor. La encapsulación es, por lo tanto, el principio de hacer que partes del objeto sean invisibles para el usuario, esto se denomina atributos/métodos privados, por el contrario, si el usuario tiene la posibilidad de utilizar atributos/métodos, estos son públicos .
Las definiciones de estos objetos se denominan "clases", se utilizan creando una nueva instancia de la clase como con un tipo normal (números, matrices, cadenas...). Es solo que en la mayoría de los compiladores (si no en todos) esta instanciación está implícita: var a = 5; crea una variable del objeto número con el valor '5'. Hablo de objetos numerados por abuso de lenguaje. Una diferencia con el OOP son las funciones aplicadas a una variable:
sea a = 1;
//Sin programación orientada a objetos
suma(a, 1); // definido por función (@obj, nbr) { obj += nbr; }
// POO
a.añadir(1); // definido por el método add (nbr) { this += nbr; }
La función 'agregar' toma un número para agregar como parámetro. La diferencia entre las dos versiones es el contexto, en el primer caso 'add' no sabe a qué objeto aplicar estas instrucciones, necesita una referencia a este número (el parámetro 'obj'). Mientras que en la segunda función, es un método. Por lo tanto, conoce el objeto que debe modificarse ya que 'add' pertenece a 'a'. Nota: La sintaxis es totalmente arbitraria, solo tienes que entender el principio.
Para su información, 'agregar' es público si siguió, ya que el usuario puede llamar a la función.
Probablemente ya hayas usado variables globales, te permiten guardar información entre rondas y poder acceder a ella en cualquier parte de tu código. Lo que las diferencia de las variables "locales" es su "alcance". Tome el siguiente código:
global_global;
prueba de alcance de la función () { var función local; }
var localPrincipal;
Cada una de las variables anteriores tiene un alcance diferente: _global es accesible en todas las torres, localMain solo es accesible en el bloque principal (no en las funciones), localFunction solo es accesible en la función "testScope". El alcance también se aplica a las funciones, de hecho, scopeTest es accesible para todas las torres desde cualquier lugar, mientras que una función anónima solo es accesible en el espacio donde se creó (como una variable).
El alcance de una variable se aplica a todos los bloques (símbolo de bloque: '{' y '}' ). Por lo tanto, una variable creada en un if, un while, un do/while, un for no es accesible fuera de ella:
si es verdad) { var localIf = 0; // Creación de localIf } // fin de la vida de localIf
depurar (si local); // Error: (localIf) variable o función desconocida
for (var i = 0; i < 5; ++i) { // Crear i
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.