Struktury danych
jakubkrol
<font size="4">UWAGA! To jest bardziej zaawansowany artykuł dotyczący sense script!
Aby poznać podstawy sense script zapraszam do przeczytania artykułu sense script - Pierwsze kroki</span>
Struktury danych
W sense script nie ma żadnych tablic, czy rekordów...
Jednak wciąż możesz ich używać!
Oto tutorial, który pokaże Ci jak używać tablic, czy rekordów w sense script!
1. Dlaczego mogę używać Struktur danych?
Możesz używać struktur danych, gdyż możesz załączać znaki takie jak ".", "/", "[" itp w nazwach zmiennych! sense script w tym zakresie jest bardzo elastyczny i pozwala na na prawdę wiele.
2. Rekordy
Stwórzmy nowy rekord! Nazwijmy go rec
Nasz rekord będzie zawierał imię, mail i płeć
Jak go utworzyć?
Jeżeli chcielibyśmy go tylko zadeklarować, to możemy napisać:
var(rec.name);
var(rec.mail);
var(rec.sex);
Lub jeżeli wolelibyśmy go od razu użyć, napiszemy:
set(rec.name, 'Jakub');
set(rec.mail, '[email protected]');
set(rec.sex, 'M');
Teraz w bardzo prosty sposób możesz użyć ten rekord, np:
out('*[rec.name] ma e-mail *[rec.mail]');
I to wszystko o rekordach w sense script!
Tablice
Jedną z najważniejszych rzeczy w programowaniu są tablice.
Jak użyć ich w sense script? To tak jak z rekordami - po prostu używaj "[...}", lub "(...)". Przejdźmy do praktyki.
W naszym przykładzie stworzymy tablicę 1..2x1..2, wypełnimy ją i wyświetlimy.
Na początku ręcznie (można to również zrobić automatycznie) stwórz i wypełnij tablicę:
set(arr[1][1], '1');
set(arr[1][2], '2');
set(arr[2][1], '3');
set(arr[2][2], '4');
Teraz nasza tablica jest gotowa do użytku
Potrzebujemy ją tylko wyświetlić:
Najpierw spróbuj pokazać tylko wartość 1x2 używając zmiennej l:
set(arr[1][1], '1');
set(arr[1][2], '2');
set(arr[2][1], '3');
set(arr[2][2], '4');
set(l, 2);
out('*[arr[1][*[l]]]');
Błąd! Oto output:
Script start at time: 2009-05-05 09:08:08
*[arr[1][2]]
Script finish at time: 2009-05-05 09:08:08. Done in 15 ms.
Dlaczego tak się stało? Ponieważ sense script na początku szukał arr[1][2] - tego nie było w kodzie... Następnie kompilator szukał zmiennej l - ona w kodzie była
Dlatego też zmienna l musi być przez tablicą! Zmodyfikuj kod:
set(l, 2);
set(arr[1][1], '1');
set(arr[1][2], '2');
set(arr[2][1], '3');
set(arr[2][2], '4');
out('*[arr[1][*[l]]]');
lub jeszcze lepiej:
var(l);
set(arr[1][1], '1');
set(arr[1][2], '2');
set(arr[2][1], '3');
set(arr[2][2], '4');
set(l, 2);
out('*[arr[1][*[l]]]');
Zadanie Domowe:
Teraz spróbuj wykonać następujące ćwiczenie:
-
Twórz nową tablicę 1..5 wypleniając ją ręcznie
-
Używając funkcji math oraz repeat...until automatycznie pokaż wszystkie liczby 1-5 z tej tablicy
Zrób to sam!
Twók kod powinien być zbliżony do tego:
set(i, 1);
set(arr[1], '1');
set(arr[2], '2');
set(arr[3], '3');
set(arr[4], '4');
set(arr[5], '5');
repeat();
out('*[arr[*[i]]];');
math(i, '*[i]+1');
until(*[i], 6);
A output taki:
Script start at time: 2009-05-05 09:16:44
1;
2;
3;
4;
5;
Script finish at time: 2009-05-05 09:16:44. Done in 31 ms.
Jeżeli Twój output jest podobny to umiesz już używać tablic.
Tablica połączona z rekordem?
Tak!
Możesz używać tablic rekordów (czyli tablic połączonych z rekordami)! Na przykład:
set(people[1].name, 'Jakub');
set(people[1].sex, 'M');
set(people[2].name, 'Martua');
set(people[2].sex, 'K');
Jest tablicą dwóch rekordów. To także możesz użyć w dowolny sposób.
Nowe Struktury danych
Ponieważ sense script jest bardzo elastyczny i nazwy zmiennych mogą być dowolnie "udziwniane" możesz używać swoich własnych Struktur danych.
Po prostu postępuj podobnie jak w przykładach z rekordami i tablicami, używając ich wg własnego upodobania - na przykład:
var(newstruct.name_:$fnd[x]:);
lub jakkolwiek inaczej - używaj ich wg własnych zapotrzebowań.
OK ;]
Zamiast nazywac artykuły [kategoria]_Nazwa, skorzystaj z gotowego mechanizmu - /Kategoria/Subkategoria/Jeszcze_jedna_subkategoria/Artykuł. Wtedy nazwa tego artykułu brzmiałaby na przykład "/SenseScript/Struktury_Danych"