Globale og lokale variabler

Hidtil har vi arbejdet med globale variabler forstået på den måde, at når vi én gang har defineret og loadet variabler som f.eks. ES, EN og ED (EntitySelected, EntityName, EntityData) m.fl, som vi definerede tidligere, vil disse variabler være til rådighed i AutoCAD-dokumentet, indtil dokumentet lukkes. Når vi én gang f.eks. har kaldt funktionen STOREBOGSTAVER fra AutoCADs kommandolinje, vil vi efterfølgende kunne tilgå enhver anvendt variabel ved enten blot at taste ! + variabelnavnet på AutoCADs kommandolinje eller ved blot at taste variabelnavnet i VisualLISPs console window.

Her er et eksempel hvor variablen ED (EntityData) er kaldt fra AutoCADs kommandolinje:
Kald variabel med !ed

Det betyder, at AutoCAD-dokumentet ikke “glemmer” variablen, efter at den er blevet brugt i funktionen. Det kan nogle gange være en fordel, men de fleste gange er det faktisk en ulempe, fordi variablens værdi kan “forstyrre” eventuelle andre LISP-funktioner, der f.eks. benytter samme variabel. Derfor vil det de fleste gange være bedst at benytte lokale variabler.

Indtil videre har vores funktions-definition set ud som dette …

hvor vi ikke bekymrede os om at angive, hvilke variabelnavne, vi ønskede at benytte os af. De anvendte variabler blev alle globale variabler.

Nu vil vi i stedet gøre dette …

hvor vi fortæller, hvilke variabler, funktionen skal benytte sig af. Fordelen er, at vi dermed opretter lokale variabler, der kun “lever”, mens funktionen kører og derfor aldrig kommer til at influere på andre LISP-funktioner.

Breakpoints og trinvis debugging

Under udviklingen af en funktion er det rigtig godt at have styr på, hvilke værdier, variablerne antager under afviking af funktionen, så vi effektivt kan debugge funktionen og finde frem til eventuelle fejl (bugs) i koden.

For at vi kan gøre det, afsætter vi først et eller flere breakpoints i koden.

Når et breakpoint er placeret, kan funktionen kaldes igen, hvorefter eksekveringen går i gang, men umiddelbart stopper der, hvor breakpointet er sat. Dermed aktiveres Debug-tools, og vi kan trinvist bevæge os fremad i koden ved at klikke på Step into, Step over eller Step out. Vi kan også vælge at taste F8, som svarer til Step into.
Så længe funktionen er aktiv, kan vi kalde de anvendte variabler i console-vinduet, så vi kan se værdierne undervejs, men når funktionen er færdig, bliver alle variabelværdier “glemt”.

Hvis der stadig findes variabel-værdier, efter at funktionen er afsluttet, vil det skyldes, at der stadig “hænger” globale variabler i systemet. For at komme dette til livs kan du lukke og genåbne AutoCAD-dokumentet. Dermed “glemmes” alle globale variabler.

Nu går vi til …