A MAXScript programozási nyelv

Típusok, típuskonstrukciók

A MAXScript-ben nincsenek alapvető típuskategóriák, gyakorlatilag minden értéknek tekintendő, minden osztály a rendszer gyökér osztályából, a Value-ból származik, amely biztosít olyan metódusokat és operátorokat, amelyek bármely osztály számára elérhetők. A rendszerben számos beépített típus van (Basic Data Values, Time Values, Bitmap Values, Stream Values, stb.). Új típust a már meglévő típusokat felhasználó struct definiálásával van lehetőségünk megadni.

Value class

A Value osztályból származó osztályok (azaz gyakorlatilag minden más osztály) számára biztosított operátorok és metódusok:

Struct típuskonstrukciók

Alap esetben a struct típuskonstrukcióval megvalósítható a direktszorzat típus, gyakorlatilag legegyszerűbb esetben csupán a tagok neveinek felsorolásából áll a struct-definíció. Ahogy a nyelvben máshol, itt sem adható meg explicit típus. Értékadáskor létrejön egy példány, amely mezőit név szerint inicializálhatjuk. Amennyiben ilyenkor nem adunk egy mezőnek értéket, az a legelső értékadásig undefined értékkel bír.

struct person (name, height, age, sex) bill = person name:"Bill" height:72 age:34 sex:#male joe = person name:"Joseph" sex:#male

Származtatott metódusok

Minden struct a Value osztályból származik, és implicit implementálásra kerülnek az ott lévő print(), format(), classOf(), superClassOf(), isKindOf(), == és != metódusok. Egyetlen kivételt a copy() metódus képez, amely nem származik a Value osztályból. Ez a metódus egy sekélyszintű másolatot hoz létre az adott struct-ból, így például egy hivatkozott tömböt tartalmazó struct másolata ugyanarra a tömbpéldányra fog a továbbiakban is hivatkozni.

Eseménykezelők

A struct-okhoz két esemény is kötődik, szintaxisuk: on create do <expression> és on clone do <expression>. A hozzájuk kapcsolt kifejezés kerül végrehajtásra, amennyiben új pédányt hozunk létre az adott struct-ból, illetőleg amikor meghívjuk az adott példányra a copy műveletet. Az eseménykezelők implicit private-k.

struct foo2 ( A = 1, B = 3, fn error = throw "ZZZ", on create do format "Struct Created: %\n" this, on clone do format " Struct Cloned: %\n" this ) f = foo2 ()

Private és public tagok

Csak két láthatósági szint adható meg MAXScript-ben: a public és private, ezek is csak az általunk létrehozott struct-ok elemeire. Ha nem adunk meg láthatósági minősítőt, a program alapértelmezés szerint public-ként kezel minden mezőt. Private tagok csak a struct példányon belül érhetők el. Privát tag elérésének megkísérlése futási idejű hibát vált ki. Ha a struct egy kódolt szkriptben definiált (encrypted script – mse), akkor az adott tag értéke nem jelenik meg még a debugger-ben sem, illetve egyéb hibaüzenet-pufferben. A két támogatott eseménykezelő (on create do és on clone do) azonban mindig implicit privátok, viszont elláthatók public minősítéssel.