Variable size Type array?
BlitzMax Forums/BlitzMax Beginners Area/Variable size Type array?
| ||
Is there any way to make a list of variable length as a parameter to a type? Type Model Field Children[] EndType |
| ||
Use a linked list.Type Model Global Root:TList = New TList Field Children:TList = New TList Field Parent:Model Field Link:TLink Method AddChild( c:Model ) If c Then c.SetParent( Self ) End Method Method GetChild:Model( idx% ) Return Model(Children.GetValue( idx )) ' Cast from Object to Child on return End Method Method SetParent( p:Model ) If Link Then Link.Remove( ) Parent = p If p Then Link = p.Children.AddLast( Self ) Else Link = Root.AddLast( Self ) EndIf End Method End Type |
| ||
Doesn't that already work? Just use New when you want to give it a size. |
| ||
Yeah you declare arrays with new and assign them to your variable. Can't remember the syntax off the top of my head. |
| ||
[Code]SuperStrict Type Model Field myChildren:Children[] EndType Type Children Field something:Int EndType Local myModel:Model = New Model myModel.myChildren = New Children[8] myModel.myChildren = myModel.myChildren[..5] Print myModel.myChildren.length[/Code] Might have overdone this - but as Azathoth and Nomen luni said, just use new. |
| ||
Using arrays for this is a bad idea. The time it takes to resize an array is variable, adding a link to a linked list is near constant and far more efficient. |