|
16.04.2008, 19:32
|
#1
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Type - вопросы
Если я использую SuperStrict, то
Можно-ли TObject использовать так?:
SuperStrict
...
my_list.AddLast(obj1:T_obj1)
my_list.AddLast(obj2:T_obj2)
For obj:TObject = EachIn my_list
...
Next
...
- Если НЕТ то как сделать хранение и перечисление разных типов переменных в TList с SuperStrict
- Как узнать како-го типа етот объект(настоящий тип(T_obj1,T_obj2), а не TObject)
*Зачем использовать Strict или SuperStrict : ???Ускоряет???
**TLink : Что ето ?
|
(Offline)
|
|
16.04.2008, 20:08
|
#2
|
|
Ответ: Type - вопросы
1)и зачем же тебе TObject ? используй наследие
SuperStrict
Type TBase
field global_var%
method Base() abstract
End Type
Type TObj1 extends TBase
method Base()
global_var = 1
end method
End Type
Type TObj2 extends TBase
method Base()
global_var = 2
end method
End Type
Global List:TList = new TList
List.AddLast(new TObj1)
List.AddLast(new TObj2)
for local obj:TBase = eachin List
obj.Base()
debuglog obj.global_var
next
List.Clear()
List = null
2) узнать какого типа обьект нельзя
используй для хранения типа дополнительную переменную
и вообще научись программировать так чтобы не нужно было узнавать какого типа обьект
3) Strict, SuperStrict - режими придирания компилятора к коду
SuperStrict не позволит определить переменую без типа
или использовать неопределенную переменую
4)TLink - одиница в TList, часть связаного списка
хранит указатель на предыдущий обьект, следуйший обьект
и указатель на обьект который хранит
TList считай как кинопленка у которой концы склеены
каждый кадр - это TLink
а то что содержит кадр - это то что ты добавил
|
|
|
Сообщение было полезно следующим пользователям:
|
|
16.04.2008, 21:22
|
#3
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Сообщение от jimon
2) узнать какого типа обьект нельзя
|
Можно узнать. Но это отдельная песня (отражение).
Type myType
Field xxx:Byte
End Type
Local testobj:myType = New myType
Print TTypeId.ForObject( testobj ).Name()
Хотя думаю ему это ни к чему, так что jimon прав относительно наследования.
drunnik В Tlist можно запхать любой объект. И крутить их все в eachin тоже можно. Примерно так:
for local o:Object = eachin yourList
if ( TmyFirstType(o) ) then TmyFirstType(o).method№
if ( TmySecondType(o) ) then TmySecondType(o).method№
next
Вообще reflection прикольная штуковина, с помощью нее можно узнать какие имена методов в типе, какие названия полей типа, базовый тип это или "родственник", можно создавать любые типы и вызывать из них методы. В общем надо статеку написать, если руки дойдут... и если это вообще кому-то надо будет.
Последний раз редактировалось jimon, 16.04.2008 в 23:00.
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо dimanche13 за это полезное сообщение:
|
|
17.04.2008, 13:52
|
#4
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Type - вопросы
jimon, стрицты, они ведь не только влияют на придирчивость? Буржуи говорили что прирост неслабый с суперстрицтом. Это так?
|
(Offline)
|
|
17.04.2008, 17:47
|
#5
|
|
Ответ: Type - вопросы
MoKa
имхо, оно влияет на производительность исправляя руки программеру
|
|
|
17.04.2008, 18:22
|
#6
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Type - вопросы
Ну и это корректно
Хотя, я и так кодил хорошо, просто не указывал и не объявлял какая это переменная, в остальном всё ок, хм, ну хз хз =)
|
(Offline)
|
|
18.04.2008, 22:07
|
#7
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Ответ: Type - вопросы
Вопрос: Сколько памяти требует один тип ? МНОГО % МАЛО ?
*просто создал для каждой OpenGl функции свой тип
Цитата из BlitzMax\mod\pub.mod\opengl.mod\opengl.bmx:
Function glVertex2d(x_:Double,y_:Double)
Function glVertex2dv(v_:Double Ptr)
Function glVertex2f(x_:Float,y_:Float)
Function glVertex2fv(v_:Float Ptr)
Function glVertex2i(x_:Int,y_:Int)
Function glVertex2iv(v_:Int Ptr)
Function glVertex2s(x_:Short,y_:Short)
Function glVertex2sv(v_:Short Ptr)
Function glVertex3d(x_:Double,y_:Double,z_:Double)
Function glVertex3dv(v_:Double Ptr)
Function glVertex3f(x_:Float,y_:Float,z_:Float)
Function glVertex3fv(v_:Float Ptr)
Function glVertex3i(x_:Int,y_:Int,z_:Int)
Function glVertex3iv(v_:Int Ptr)
Function glVertex3s(x_:Short,y_:Short,z_:Short)
Function glVertex3sv(v_:Short Ptr)
Function glVertex4d(x_:Double,y_:Double,z_:Double,w_:Double)
Function glVertex4dv(v_:Double Ptr)
Function glVertex4f(x_:Float,y_:Float,z_:Float,w_:Float)
Function glVertex4fv(v_:Float Ptr)
Function glVertex4i(x_:Int,y_:Int,z_:Int,w_:Int)
Function glVertex4iv(v_:Int Ptr)
Function glVertex4s(x_:Short,y_:Short,z_:Short,w_:Short)
Function glVertex4sv(v_:Short Ptr)
|
Цитата из "Мой мод":
Type z3dw_glVertex2d
Field x : Double , y : Double
Function Create : z3dw_glVertex2d ( x : Double , y : Double)
Local ret : z3dw_glVertex2d = New z3dw_glVertex2d
ret . x = x
ret . y = y
Return ret
End Function
Method Draw ( )
glVertex2d x , y
End Method
End Type
Type z3dw_glVertex2f
Field x : Float , y : Float
Function Create : z3dw_glVertex2f ( x : Float , y : Float )
Local ret : z3dw_glVertex2f = New z3dw_glVertex2f
ret . x = x
ret . y = y
Return ret
End Function
Method Draw ( )
glVertex2f x , y
End Method
End Type
...
|
|
(Offline)
|
|
20.04.2008, 18:12
|
#8
|
Разработчик
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений (для 95 пользователей)
|
Ответ: Type - вопросы
Насчёт наследия:
не очень понял зачем переменная
сообщение #2:field global_var%
|
Почему нельзя так?:
Const z3dw_name_glVertex3i : Byte = 13
Type z3dw_glVertex3i
...
Method Obj_Type : Byte ( )
Return z3dw_name_glVertex3i
End Method
End Type
|
???срадает скорость???
|
(Offline)
|
|
20.04.2008, 19:10
|
#9
|
|
Ответ: Type - вопросы
drunnik
global_var показывало переменую общую для двух типов
|
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:48.
|