> LeekScript vejledning
Denne side er kun gyldig for LS1.0, i LS1.1 er klasserne direkte brugbare: Klasser og objekter
I denne artikel vil vi oprette pseudo OOP (Object Oriented Programming), da LeekScript ikke er et objektorienteret sprog. Først vil jeg introducere begrebet OOP, derefter vil jeg forklare, hvordan variabelt omfang fungerer. For ikke at være for teoretiske skal vi programmere en struktur kaldet "Binært søgetræ", det er en struktur optimeret til ordnet indsættelse og søgning.
Dette begreb er meget vigtigt, hvis du begynder at interessere dig for andre sprog, såsom C (++/#), PHP, Java osv. Det er en ny måde at bygge dine programmer på. Hun introducerer genstande. Du ved helt sikkert, hvad det er i hverdagen, det er noget, der kan transformeres/manipuleres, men i programmering kalder vi "objekt" en struktur bestående af variabler og funktioner kaldet '''attributter og metoder''. ''. Lad os tage eksemplet med en bil, den er karakteriseret ved en hastighed, en acceleration (lad os heller ikke gå ind i detaljerne) samt handlinger som at dreje, accelerere, bremse... Her er hvordan vi kunne repræsentere vores bil:
Dette giver mulighed for en struktureret og ren kode. Men også for at forenkle brugen af handlinger sammensat af komplekse instruktioner, der vil være skjult for brugeren. En anden meget vigtig ting i OOP er princippet om indkapsling... Alle attributter og metoder skal ikke manipuleres af brugeren, som kunne "brække" objektet, hvis det ikke tjekker sådan og sådan ting. Lad os forestille os, at brugeren ændrer hastigheden på vores bil under spillet og ikke tager højde for inerti eller noget andet, bilen ville opføre sig mærkeligt, og selv dette er kun en mindre ændring. Indkapsling er derfor princippet om at gøre dele af objektet usynligt for brugeren, dette kaldes private attributter/metoder, tværtimod hvis brugeren har mulighed for at bruge attributter/metoder , er disse offentlige .
Definitionerne af disse objekter kaldes "klasser", de bruges ved at oprette en ny instans af klassen som med en normal type (tal, arrays, strenge...). Det er bare, at i de fleste compilere (hvis ikke alle) er denne instansiering implicit: var a = 5; opretter en variabel af nummerobjektet med værdien '5'. Jeg taler om nummererede objekter ved misbrug af sprog. En forskel med OOP er de funktioner, der anvendes på en variabel:
lad a = 1;
//Uden OOP
tilføje(a, 1); // defineret af funktion (@obj, nbr) { obj += nbr; }
// OOP
a.add(1); // defineret ved metode add (nbr) { this += nbr; }
Funktionen 'tilføj' kræver et tal at tilføje som en parameter. Forskellen mellem de to versioner er konteksten, i det første tilfælde ved 'add' ikke, hvilket objekt de skal anvende disse instruktioner på, den skal have en reference til dette nummer ('obj'-parameteren). Hvorimod det i den anden funktion er en metode. Den kender derfor det objekt, der skal ændres, da 'add' hører til 'a'. Bemærk: Syntaksen er fuldstændig vilkårlig, du skal bare forstå princippet.
FYI, 'add' er offentlig, hvis du fulgte, da brugeren kan kalde funktionen.
Du har sikkert allerede brugt globale variabler, de giver dig mulighed for at opbevare information mellem runder og for at kunne få adgang til dem hvor som helst i din kode. Det, der adskiller dem fra "lokale" variabler, er deres "omfang". Tag følgende kode:
global _global;
function scopeTest () { var lokalFunktion; }
var localMain;
Hver af variablerne ovenfor har et forskelligt omfang: _global er tilgængelig overalt på alle tårne, localMain er kun tilgængelig i hovedblokken (ikke i funktioner), localFunction er kun tilgængelig i "testScope"-funktionen. Omfanget gælder også for funktioner, scopeTest er faktisk tilgængeligt for alle tårne overalt, hvorimod en anonym funktion kun er tilgængelig i det rum, hvor den blev oprettet (som en variabel).
Omfanget af en variabel gælder for alle blokke (bloksymbol: '{' og '}'). Således er en variabel, der er oprettet i en if, a while, a do/while, a for, ikke tilgængelig uden for den:
hvis (sand) { var localIf = 0;// Oprettelse af localIf } // end of life of localIf
debug(localIf); // Fejl: (localIf) ukendt variabel eller funktion
for (var i = 0; i < 5; ++i) { // Opret i
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.