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

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

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

Ответ
 
Опции темы
Старый 16.04.2008, 19:32   #1
zheland
Разработчик
 
Регистрация: 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
...
  1. Если НЕТ то как сделать хранение и перечисление разных типов переменных в TList с SuperStrict
  2. Как узнать како-го типа етот объект(настоящий тип(T_obj1,T_obj2), а не TObject)
*Зачем использовать Strict или SuperStrict : ???Ускоряет???
**TLink : Что ето ?
(Offline)
 
Ответить с цитированием
Старый 16.04.2008, 20:08   #2
jimon
 
Сообщений: n/a
Ответ: 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
а то что содержит кадр - это то что ты добавил
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
zheland (17.04.2008)
Старый 16.04.2008, 21:22   #3
dimanche13
Мастер
 
Регистрация: 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 за это полезное сообщение:
moka (17.04.2008), Randomize (10.11.2009), zheland (17.04.2008)
Старый 17.04.2008, 13:52   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Type - вопросы

jimon, стрицты, они ведь не только влияют на придирчивость? Буржуи говорили что прирост неслабый с суперстрицтом. Это так?
(Offline)
 
Ответить с цитированием
Старый 17.04.2008, 17:47   #5
jimon
 
Сообщений: n/a
Ответ: Type - вопросы

MoKa
имхо, оно влияет на производительность исправляя руки программеру
 
Ответить с цитированием
Старый 17.04.2008, 18:22   #6
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Type - вопросы

Ну и это корректно
Хотя, я и так кодил хорошо, просто не указывал и не объявлял какая это переменная, в остальном всё ок, хм, ну хз хз =)
(Offline)
 
Ответить с цитированием
Старый 18.04.2008, 22:07   #7
zheland
Разработчик
 
Регистрация: 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
zheland
Разработчик
 
Регистрация: 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
jimon
 
Сообщений: n/a
Ответ: Type - вопросы

drunnik
global_var показывало переменую общую для двух типов
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Type in Type Taugeshtu 2D-программирование 7 18.09.2009 08:36
Type and etc... ELIAS 2D-программирование 8 05.02.2009 19:34
Вопросик про TYPE TEHb08 Blitz3D 15 09.01.2009 23:06
Type, Function и т.д. Тарас Шевченко 2D-программирование 14 12.02.2007 17:09
Dim vs Type HolyDel 3D-программирование 13 08.10.2006 14:30


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


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