forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Тип в типе (http://forum.boolean.name/showthread.php?t=2878)

AnRee 06.03.2007 19:54

Тип в типе
 
Заинтересован этой темой, никто не знает где прочитать об этом, или статьи есть какие нить?:)

ЛысыЙ_Чук-Иванчук 06.03.2007 21:51

Re: Тип в типе
 
Собна зачем это надо:)

impersonalis 06.03.2007 21:53

Re: Тип в типе
 
[blitz]
Const MSIZE=4

Type MASTER
Field ID%
Field CHILD.SLAVE[MSIZE]
End Type

Type SLAVE
Field ID%
End Type

;===
Local j=1
Local z=0
M.MASTER=New MASTER
M\ID=j

For i=1 To 15
M\CHILD[z]=New SLAVE
M\CHILD[z]\ID=i
If z=MSIZE
j=j+1
M.MASTER=New MASTER
M\ID=j
z=0
EndIf
z=z+1
Next
;===
For m.master=Each master
Print "master (ID="+m\ID+") :"
For i=1 To MSIZE
If m\CHILD[i]=Null Exit
Print " child (ID="+m\CHILD[i]\ID+")"
Next
Next
[/blitz]

HolyDel 07.03.2007 01:38

Re: Тип в типе
 
я так думаю что внутренних элементов может быть неопределенное кол-во.
хз кк ето сделать, но скоре всего как-раз через ID мастер, и перебирать все равно все Slav-ы сравнивать ид с ид мастера и делать нужные действия.

impersonalis 07.03.2007 02:15

Re: Тип в типе
 
Я просто не стал усложнять пример.
Вот:
http://www.boolean.name/showthread.php?t=1253

Platon 07.03.2007 02:21

Re: Тип в типе
 
Все дело в том, что в Блиц может быть только одна коллекция(список) обьектов одного типа. Поэтому есть несколько вариантов:
-использовать массив указателей, как привели выше.
-использовать указатель на начло и конец, вроде резервирования некотрого участка списка ограниченного этими указателями.
-писать свой 1\2 направленный список.
-еще какой-нить вариант :)

impersonalis 07.03.2007 02:25

Re: Тип в типе
 
В статье - как раз про списки.

CRASHER 10.12.2012 03:47

Ответ: Тип в типе
 
Извините за откапывание темы, но вот тип в типе заинтересовал. В примере импера перечисление подтипов начинается со второго подтипа, первый же не отображается. Если начинать счет с нуля то он появляется, однако после второго типа(мастера) уже ни один не отображается, в чем дело? Видемо запись происходит первого в нулевой i, но я не пойму почему.

impersonalis 10.12.2012 13:26

Ответ: Тип в типе
 
Цитата:

Сообщение от CRASHER (Сообщение 246191)
Извините за откапывание темы, но вот тип в типе заинтересовал. В примере импера перечисление подтипов начинается со второго подтипа, первый же не отображается. Если начинать счет с нуля то он появляется, однако после второго типа(мастера) уже ни один не отображается, в чем дело? Видемо запись происходит первого в нулевой i, но я не пойму почему.

Стоило писать:
Код:

Local z=1
Вся путаница, что для совместимости в блитце можно использовать индексацию и с 0, и с 1.
Код:

Local x%[2]
For i=0 To 2
        x[i]=i+1
Next
For i=0 To 2
        Print x[i]
Next

Т.е. когда вы пишите Local x%[SIZE] выделяется на самом деле банк под SIZE+1 элемент, чт позволяет индексировать их как [0;SIZE-1], так и [1;SIZE] и т.п.

MiXaeL 13.12.2012 19:08

Ответ: Тип в типе
 
Сразу скажу, что все (2007 года) не читал, но тип в типе в блице не реализуется по классике.
Т.е. ты получишь просто два линейных списка и дальше можешь уже как-то сам между ними устанавливать взаимоотношения. А про индексирование это вообще кошмар. Я, выросший на бейсиках, не раз путался в с этим делом в нормальных языках. Так что советую сразу потратить время на С++\С#\Java... Пользы больше на порядок (да и возможностей).

impersonalis 13.12.2012 21:06

Ответ: Тип в типе
 
В MATLAB и долбанном SMathStudio, например индексация с 1.
А в Mathcad с 0.
ЕМНИП, как-то препод обронил, что мол выбор первого индекса зависит от считающего: математик или логик.


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

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