ДИНАМИЧЕСКОЕ И СТАТИЧЕСКОЕ ПОСТРОЕНИЕ И УДАЛЕНИЕ ПЕРЕМЕННЫХ |
Создание структур и массивов осуществляется несколькими способами. Один из основных – посредством оператора BUILD <имя переменной> ( [<список параметров>] ) ] [ : <вызов блока> ] где <вызов блока> - выражение вызова блока. Переменные, перечисляемые в build,должны быть составными и определены. Пример: internal <int> blk( <double> dbVar, <tagStru> pStru ), => private <tagStru> stru, <double> [100, 200] arrOfDouble, => . . . build stru : onCreate, arrOfDouble, vBlock Тело stru будет динамически создано, после чего будет вызван блок с именем onCreate.Если stru имеет конструктор, то по build stru( x, y, z ) : onCreate( w ) будет создано тело структуры и вызван конструктор с параметрами x, y, z. Мы можем совместить описание и создание структурных переменных с помощью BUILD PRIVATE <список переменных с инициализацией> build private <tagStru> stru( parm1, parm2, parm3 ) : onCreate( w ), =>
Аналогично для локальных переменных: BUILD LOCAL <список переменных с инициализацией> Динамически созданные переменные могут быть удалены с помощью оператора DELETE <переменная> [ : <вызов блока> ] { , <переменная> : <вызов блока> ] } Прежде чем тело составной переменной будет удалено из памяти, будет вызван представленный по <вызов блока> блок. Если данная переменная имеет деструктор, то такой блок будет вызван до деструктора. BUILD_BY <имя переменной>[ ( [<список параметров>] ) ] аналогичен BUILD, за исключением того, что build_by применим только для структур и коллекций с конструкторами; тело структур и коллекций не создается – это возлагается на конструктор. struct tagStru2 { . . . } { Create, Delete } build_by private <tagStru2> stru( x, y ) : AfterCreate( z ) |