forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   BlitzMax (http://forum.boolean.name/forumdisplay.php?f=104)
-   -   Что это может значить? (http://forum.boolean.name/showthread.php?t=15252)

Черный крыс 06.08.2011 02:31

Что это может значить?
 
Приветствую!

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

Код:


Type TGenericEnumerator {expose category="cower.generic.iterator" constructor="Enum"}

Что самое интересное - компилятор это нормально хавает.

в чем здесь смысл ???

Randomize 08.08.2011 09:08

Ответ: Что это может значить?
 
Конструкция:
PHP код:

Type TGenericEnumerator {}
EndType 

Тоже работает

Равно как и:
PHP код:

Type TGenericEnumerator {ololo}
EndType 

И даже так:
PHP код:

Type TGenericEnumerator {DebugLog "oshshs" tatata 123 }
EndType 

Эксперименты с отражением:
PHP код:

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

Откуда исходник?

dimanche13 08.08.2011 11:44

Ответ: Что это может значить?
 
это, что в фигурных скобках, называется метаданные

moka 08.08.2011 17:42

Ответ: Что это может значить?
 
Это подобно аттрибутам в .Net?

Randomize 30.08.2011 06:54

Ответ: Что это может значить?
 
Цитата:

Сообщение от dimanche13 (Сообщение 198398)
это, что в фигурных скобках, называется метаданные

А для чего они нужны?
Есть ли примеры их применения именно в BlitzMax?

moka 31.08.2011 14:07

Ответ: Что это может значить?
 
Ответа на свой вопрос я не получил, но если это подобно аттрибутам, то смысл таков:
Вот есть у тебя например класс, TControl, он выступает в роли открытого класса для реализации кастомных GUI элементов. Например тебе нужна кнопка: TButton Extends TControl.
Получается что TButton унаследует данные от TControl. При включении приложения, используя рефлекцию, тебе нужно получить весь список классов например, и проверить их на соответствие правил создания "ребёнка" TControl. Тогда ты пробегаешься по загруженным классам, и если всё ок, ты заносишь их в список. Но тебе например нужна дополнительная информация о самом классе, вот тут и приходят на помощь мета таги. Где ты можешь оставить нужную инфу о классе, которая может описать параметры работы с классом, или что-то ещё, что тебе нужно.

Черный крыс 11.09.2011 21:06

Ответ: Что это может значить?
 
Это действительно мета-данные.

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

Код:

Type TTest {Мета-данные класса}
    Field var:Int {Мета-данные поля}
 
    Method Test() {Мета-данные метода}
 
    End Method
End Type

ЗЫ Исходник был с офф-сайта.


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

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