Assert, как и многие другие, казалось бы, «зарезервированные слова», на самом деле являются так называемыми «стандартными функциями».
Exit, Break, Continue и Assert являются примерами символов, которые не зарезервированы компилятором, а скорее существуют как символы в пространстве имен модуля «System». Причина в том, что в Delphi (или, точнее, в Turbo Pascal) изначально не было таких понятий, как Exit, Break, Continue или Assert. Многие существующие пользователи, возможно, уже использовали эти идентификаторы для своих собственных библиотек. Если бы мы сделали эти идентификаторы зарезервированными словами, мы бы сломали многие существующие приложения. Создавая их как «стандартные функции» и «привязывая» их к системному модулю, мы могли предоставлять дополнительные функции без риска нарушения существующего кода. В какой-нибудь библиотеке, имеющей, скажем, собственную функцию Exit, это не повлияет на использование программой этого идентификатора. Однако, если программист явно хотел использовать стандартную функцию Exit, вы можете полностью указать идентификатор, подобный этому «System.Exit», и компилятор сгенерирует код для выхода из текущей функции, а не для вызова Exit, который ближе по объему.
person
Allen Bauer
schedule
02.04.2010