Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > BlitzMax

Ответ
 
Опции темы
Старый 05.08.2011, 22:31   #1
Черный крыс
 
Сообщений: n/a
Что это может значить?

Приветствую!

Вобсчем тут на днях наткнулся на исходник и увидел весьма странную строчку :

 
Type TGenericEnumerator {expose category="cower.generic.iterator" constructor="Enum"}
Что самое интересное - компилятор это нормально хавает.

в чем здесь смысл ???
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо за это полезное сообщение:
Randomize (08.08.2011), Reizel (09.08.2011)
Старый 08.08.2011, 05:08   #2
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: Планета Земля
Сообщений: 4,175
Написано 2,359 полезных сообщений
(для 6,537 пользователей)
Ответ: Что это может значить?

Конструкция:
Type TGenericEnumerator {}
EndType 
Тоже работает

Равно как и:
Type TGenericEnumerator {ololo}
EndType 
И даже так:
Type TGenericEnumerator {DebugLog "oshshs" tatata 123 }
EndType 
Эксперименты с отражением:
Framework brl.basic
Import brl
.reflection

Type TGenericEnumerator 
test }
    
Field test:Int
EndType

Local obj
:TGenericEnumerator = New TGenericEnumerator
Local id
:TTypeId TTypeId.ForName("TGenericEnumerator")

Print 
"Fields: "
For Local fld:TField=EachIn id.EnumFields()
   Print 
fld.Name() + ":" fld.TypeId().Name() + "=" fld.Get(obj).ToString()
Next



Print "Methods: "
For Local mth:TMethod EachIn id.EnumMethods()
    Print 
mth.Name()
Next 
Результат:
Fields: 
test:Int=0
Methods: 
New
Delete
Откуда исходник?
__________________
Retry, Abort, Ignore? █
AMD Ryzen 7 1700X x8 3.4Ghz; 64Gb ram; Nvidia Geforce 1070Ti Radeon RX 570
AMD Athlon II x4 2.6Ghz; 8Gb ram; Nvidia Geforce GTX 750 Ti
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
baton4ik (08.08.2011)
Старый 08.08.2011, 07:44   #3
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: Что это может значить?

это, что в фигурных скобках, называется метаданные
__________________
(Offline)
 
Ответить с цитированием
Старый 08.08.2011, 13:42   #4
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Ответ: Что это может значить?

Это подобно аттрибутам в .Net?
(Offline)
 
Ответить с цитированием
Старый 30.08.2011, 02:54   #5
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: Планета Земля
Сообщений: 4,175
Написано 2,359 полезных сообщений
(для 6,537 пользователей)
Ответ: Что это может значить?

Сообщение от dimanche13 Посмотреть сообщение
это, что в фигурных скобках, называется метаданные
А для чего они нужны?
Есть ли примеры их применения именно в BlitzMax?
__________________
Retry, Abort, Ignore? █
AMD Ryzen 7 1700X x8 3.4Ghz; 64Gb ram; Nvidia Geforce 1070Ti Radeon RX 570
AMD Athlon II x4 2.6Ghz; 8Gb ram; Nvidia Geforce GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 31.08.2011, 10:07   #6
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Ответ: Что это может значить?

Ответа на свой вопрос я не получил, но если это подобно аттрибутам, то смысл таков:
Вот есть у тебя например класс, TControl, он выступает в роли открытого класса для реализации кастомных GUI элементов. Например тебе нужна кнопка: TButton Extends TControl.
Получается что TButton унаследует данные от TControl. При включении приложения, используя рефлекцию, тебе нужно получить весь список классов например, и проверить их на соответствие правил создания "ребёнка" TControl. Тогда ты пробегаешься по загруженным классам, и если всё ок, ты заносишь их в список. Но тебе например нужна дополнительная информация о самом классе, вот тут и приходят на помощь мета таги. Где ты можешь оставить нужную инфу о классе, которая может описать параметры работы с классом, или что-то ещё, что тебе нужно.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (31.08.2011)
Старый 11.09.2011, 17:06   #7
Черный крыс
 
Сообщений: n/a
Ответ: Что это может значить?

Это действительно мета-данные.

Инфу можно оставлять не только классу но и полям и методам :

Type TTest {Мета-данные класса}
    Field var:Int {Мета-данные поля}
 
    Method Test() {Мета-данные метода}
 
    End Method
End Type
ЗЫ Исходник был с офф-сайта.
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
moka (11.09.2011)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 02:52.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com