Тема: Type and etc...
Показать сообщение отдельно
Старый 05.02.2009, 19:34   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Type and etc...

Во-первых, используете служебные имена в кач-ве имён переменных - так нельзя.
Во-вторых:
Type Object_
    Field Tip
   Field Handle_%
End Type

Const OBJ_PLAYER=1, OBJ_BOT=2, OBJ_THING=3

Type Player
    Field mesh, healph, power
End Type

Type Bot
    Field mesh, healph, power, level
End Type

Type Thing
    Field mesh, tip
End Type

For o.Object_ = Each Object_
    Select o\Tip
         Case OBJ_PLAYER
		Local Plr.Player=Object.Player(Handle_)
              UpdatePlayer(Plr)
         Case OBJ_THING
		Local Thi.Thing=Object.Thing(Handle_)
              UpdateThing(Thi)
         Case OBJ_BOT
		Local Bt.Bot=Object.Bot(Handle_)
              UpdateBot(Bt)
    End Select
Next
вывод - размер струкутры-интерфейса Object_ имеет константный sizeof для лбого кол-ва типов; внедрение новых объектов хранения реализуется в двух,а не в тёрх местах кода (1 - добавить константу - код_типа, 2- дописать ещё один case в селекторе).
Минус - за счёт type cast`а int->ptr* (разумеется - это условность, аналогия) тратится немного больше времени.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
H@NON (05.02.2009), Nex (26.02.2009)