Type имя
Параметры имя = любое допустимое имя переменной Описание Если Вы знаете язык Си – TYPE это базовая структура Blitz. Если же Вы не знаете Си, читайте далее. TYPE – это ваш лучший помощник. Он используется, чтобы создать «коллекцию» объектов, которые имеют общие параметры и могут быстро и легко изменяться. Представьте себе игру «Космические захватчики». На экране одновременно находится много инопланетян. Каждый из пришельцев имеет несколько, необходимых для него, переменных: абсцисса и ордината, плюс переменная, контролирующая отрисовку (графическое состояние). Далее, Вы могли бы сделать сотни переменных, подобных zahvatchik1x, zahvatchik1y, zahvatchik2x, zahvatchik2y, и т.д. для управления всеми пришельцами, но это не будет изящным решением. Вы могли бы использовать массив, чтобы оперировать ими; zahvatchik(x,y, graphic) и цикл его перебора через FOR ... NEXT – но это слишком трудоёмко! TYPE был создан специально для решения подобных проблем. TYPE описывает элемент коллекции. Каждый объект в этой коллекции наследует самостоятельную копию переменных, объявленных в TYPE командой FIELD. Каждая переменная каждого элемента типа может быть прочитана индивидуально и может быть легко и быстро итерирована. Используйте команду FIELD, чтобы объявить какие хотите переменные между командами TYPE и END TYPE. Если Вам это проще – представляйте себе TYPE как БД. Каждый элемент – запись в БД и каждая переменная элемента – поле в записи. Используя команды, подобные BEFORE, AFTER, и FOR ... EACH, Вы можете переместить указатель «БД», чтобы обратится к конкретному элементу типа и восстановить/установить значения его «полей». Вы не гуру в БД? Нужен другой пример? Ладно. Допустим, Вы готовите аудиторию для речи или какого-либо события, и Вы передвигаете сотни стульев для слушателей. Стулья должны быть в каком-то месте на полу, и некоторые из них должны быть подняты немного выше, чем другие ( посетители-сановники, мэр и другие). Начиная становиться компьютерным гением, вы начинаете придумывать, как можно расположить стулья с наименьшими усилиями. Вы понимаете, что пол клетчатый, как огромная сетка. Это упрощает задачу! Вам нужна только точка на полу, которую Вы разместите на миллиметровке и поместите в ячейку значение, насколько высоко должен быть стул - что базируется на словах босса, о том, где должны сидеть важные люди. Таким образом, для каждого стула, Вы будете иметь ряд и колонку на миллиметровке ( координаты абсциссы и ординаты) и уровень, чтобы установить стул на определённой высоте. Хорошо, мы подготовились. Теперь, даже имея всё на бумаге, мы всё ещё должны делать работу по расстановке всех стульев. После того как вы закончили, допустим, ваш босс подойдёт к Вам и скажет, что «они не отцентрованы справа … сдвинь их все на одну клетку ». О нет! У Вас уже всё расставлено, и даже притом, что это простая вещь – переместить стул на одну клетку вправо (в конце концов, их порядок и высота не будут меняться) – Вы всё ещё должны двигать каждый стул. Уверен, было бы хорошо, если бы Вы могли только взмахнуть рукой и сказать: «Для каждого стула в комнате добавить 1 клетку к его местоположению по х.». Увы, в реальном мире – приступайте к работе – у Вас есть много стульев, которые нужно сдвинуть. В Blitz Вы, возможно, сделали TYPE с именем STUL и задали бы поля (FIELDs) X,Y, И VISOTA. Вы тогда бы создали нужное Вам число стульев, используя команду NEW(каждый раз, когда Вы вызываете NEW – создаётся новый стул, с его собственными переменными X,Y и VISOTA) и назначали значения x,y координат и высоты соответственно своему решением. В нашем примере выше, когда босс поручил Вам передвигать стулья более чем в одной комнате, Вы, вероятно, стонали про себя. Это – большое кол-во работы! В Blitz мы могли бы использовать 4 строчки кода, чтобы приспосабливать все наши элементы типа STUL к новой позиции ( используя команды FOR ... EACH). Всё ёще непонятно? Это нормально – TYPE сложен для понимания. Смотрите пример, и мы попробуем показать Вам, как работают типы на практике. Я рекомендую просмотр кода других людей, что так же поможет Вам в освоении типов. Как только вы это сделаете, Вы будете знать, почему Си-программисты без ума от структур, и почему почти все программы Blitz используют их. Хитрая уловка для целей отладки или для сохранения данных от элементов типов в файл, заключается в использовании команды Str$(). Print Str$() будет выводить значения каждого поля элемента типа, по очереди, отделяя их запятыми и заключая в квадратные скобки, например [15,42, »Fluffy»,500]. Продвинутые программисты знают о хранении типов в «двойном связанном списке». См. также: Field, New, Null, First, Last, Before, After, Insert, Before. Пример Код:
; Объявление типа СТУЛ |
Field переменная
Параметры переменная = любое допустимое имя Описание Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение. Когда вы объявляете тип, Вы должны привязать некоторые переменные для хранения в нём. Используя команду Field между Type и End Type, вы можете задать переменную, которая может быть использована в последствии в каждом элементе типа, созданном командой New. См также: Type, End Type. Пример Код:
; Объявление типа СТУЛ |
End Type
Параметры отсутствуют Описание Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение. После описания всех переменных в вашем типе, используйте данную команду, чтобы завершить объявление типа. Пример Код:
; Объявление типа СТУЛ |
New переменная_типа
Параметры переменная_типа = фактическое имя типа, не конкретного элемента этого типа. Описание Если Вы ещё не знакомы с командой TYPE, пожалуйста, прочитайте о ней перед знакомством с командой New. Создаёт новый элемент типа. Каждый вызов этой команды автоматически добавляет новый элемент указанного типа. Для дополнительной информации просмотрите пример и другие команды, относящиеся к типам. См также: Type, Before, After, First, Last, Each, Insert, Delete. Пример Код:
; Объявление типа СТУЛ |
Each переменная_типа
Параметры переменная_типа = предварительно объявленный тип. Описание Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение. FOR ... EACH цикл позволяет Вам перебрать все элементы данного типа. Это оптимально для обновления большой группы элементов (типа группы инопланетных захватчиков). Посмотрите команду TYPE. См также: Type, New, Before, After, First, Last, Insert, Delete. Пример Код:
;двигаем все на один (подобно примеру, описанному для команды TYPE) |
First переменная_типа
Параметры переменная_типа = фактическое имя типа, не конкретного элемента этого типа. Описание Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение. Используйте данную команду чтобы установить обращение к первому элементу типа. См пример. См также: Type, New, Before, After, Last, Each, Insert, Delete. Пример Код:
;Объявление типа crafts |
Last переменная_типа
Параметры переменная_типа = фактическое имя типа, не конкретного элемента этого типа. Описание Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение. Используйте данную команду чтобы установить обращение к последнему элементу типа. См пример. См также: Type, New, Before, After, Each, Insert, Delete. Пример Код:
;Объявление типа crafts |
Before переменная_элемента_типа
Параметры переменная_элемента_типа = не имя типа, а переменная элемента типа. Описание Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение. Используёте эту команду, чтобы получить доступ к предыдущему элементу типа. См. пример. См. также: Type, New, After,First, Last, Each, Insert, Delete. Пример Код:
;Объявление типа crafts |
After переменная_элемента_типа
Параметры переменная_элемента_типа = не имя типа, а переменная элемента типа. Описание Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение. Используёте эту команду, чтобы получить доступ к следующему элементу типа. См. пример. См. также: Type, New, Before, First, Last, Each, Insert, Delete. Пример Код:
;Объявление типа crafts |
Insert
Параметры отсутствуют Описание Я не знаю точно, где на практике Вы будете использовать эту команду, но в основном для выбора: где Вы вставите текущий элемент типа в коллекции. Когда вы создаёте новый элемент типа командой NEW, он автоматически добавляется в конец коллекции. Используйте INSERT наряду с BEFORE и AFTER (и командами выбора FIRST и LAST), чтобы поместить элемент именно там, где хотите. Возможно, Вам никогда не понадобиться эта команда. Но здесь предполагается, что нужна. Ознакомьтесь с примером. См. также: Type, New, Before, After, First, Last, Each, Delete. Пример Код:
;пример по INSERT |
Delete переменная_элемента_типа
Параметры переменная_элемента_типа = не имя типа, а переменная элемента типа. Описание Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение. Используйте команду Delete, чтобы удалить элемент типа из коллекции. Используйте команды FIRST, LAST, BEFORE, и NEXT (ну это уже перебор! Естественно не NEXT, а AFTER – прим. impersonalis`а) для получения доступа к элементу типа, который вы хотите удалить, а затем команду Delete. Если Вы хотите удалить все элементы конкретного типа, Вы можете использовать конструкцию DELETE EACH. Эту команду часто используют в FOR ... EACH цикле, например, когда происходит столкновение с элементом типа и Вы хотите удалить этот элемент ( корабль инопланетных захватчиков, как пример элемента типа) из коллекции. См также: Type, New, Before, After, First, Last, Each, Insert. Пример Код:
;Двигаем всех на 1 (подобно примеру, описанному в команде TYPE) |
Null
Параметры отсутствуют Описание Определяет пустой элемент. Полезен для создания переменной типа, ни на что не указывающей, или для проверки: существует ли элемент типа. Также полезен для того, чтобы проверять – есть ли ещё элементы в коллекции, при использовании команды AFTER. Может быть использован и для присваивания, и для проверки на эквивалентность. См также: Type, New, Delete, After, Before, First, Last. Пример Код:
; пример Null |
Object-Handle
Команды недокументированные - переводить нечего, но описание сделал см: Object-Handle :glag: |
Ответ: Перевод хелпа - Type
>http://community.boolean.name/index.php?showtopic=29
пишет Die Domain "community.boolean.name" ist nicht verfьgbar. |
Ответ: Перевод хелпа - Type
Вот новая ссылка на тот топик
|
Часовой пояс GMT +4, время: 11:00. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot