forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Веселый Handle (http://forum.boolean.name/showthread.php?t=18289)

Gector 26.06.2013 20:31

Веселый Handle
 
Цитата:

Type my_type
Field a
End Type

For i=0 To 5
mt.my_type = New my_type
mt\a=i
a=Handle(mt)
Print a
Next

Print "-------------"

For i=1 To 6
mv.my_type= Object.my_type(i)
Print mv\a
Next
До недавнего времени я думал, что функция handle тупо возвращает ссылку на тип. Но как оказалось это не совсем так. Не знаю, что она делает, но без нее применить object к типу нельзя в принципе. Хотя сам по себе хендл - это элементарный порядковый номер. WTF?:4to: Попробуйте закомментировать a=Handle(mt).

Platon 26.06.2013 22:09

Ответ: Веселый Handle
 
Это ключ хеш-таблицы.
Handle добавляет экземпляр в таблицу используя порядковый номер как ключ, Object.Type соответственно ищет экземпляр в таблице по номеру-ключу. Скорее всего внутри оно реализовано с помощью С++ std::map, а оно в свою очередь алгоритмом red-black tree

Gector 26.06.2013 22:20

Ответ: Веселый Handle
 
Цитата:

Сообщение от Platon (Сообщение 262116)
Это ключ хеш-таблицы.
Handle добавляет экземпляр в таблицу используя порядковый номер как ключ, Object.Type соответственно ищет экземпляр в таблице по номеру-ключу. Скорее всего внутри оно реализовано с помощью С++ std::map, а оно в свою очередь алгоритмом red-black tree

Как то не задумывался раньше).


Часовой пояс GMT +4, время: 16:07.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot