New vs Create

BlitzMax Forums/BlitzMax Beginners Area/New vs Create

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

New is a built in blitzmax command that instantiates a New instance of an object.

New cannot accept any parameters, which means all your auto-initialization stuff has to be handled in the New method for the type.

Create is (generally) a custom made function.

SuperStrict

Type TNewType
	
	Field X:Int
	Field Y:Int
	Field Name:String
	
	Global TypeList:TList
	
	Method New() 
		If TypeList = Null Then TypeList = New TList
		X = 10
		Y = 20
		Name = "New TTest Type"
		Self.TypeList.addLast(Self)
	End Method
	
End Type

Local a:TNewType = New TNewType
	a.X = 20
	a.Y = Rand(101) 
	a.Name = "a"
	
Local b:TNewType = New TNewType
Local c:TNewType = New TNewType
Local d:TNewType = New TNewType


For Local tn:TnewType = EachIn TNewType.TypeList
	Print tn.Name + ": "+ tn.X  + ", " + tn.Y

Next


''''''''''''''''''''''''''''''''''''''''''''''''''''''''


Type TCreateType
	
	Field X:Int
	Field Y:Int
	Field Name:String
	
	Global TypeList:TList
	
	Function Create:TCreateType(X:Int = 10 , Y:Int = 20 , Name:String = "New TCreateType")
		If TypeList = Null Then TypeList = New TList
		
		Local temp:TCreateType = New TCreateType
			temp.X = X
			temp.Y = Y
			temp.Name = Name
			
		TypeList.addLast(temp)
			
		Return temp'return the type created in case the user wants to assign it to a variable
	End Function
	
End Type

Local x:TCreateType = TCreateType.Create(10 , 30 , "x") 
Local y:TCreateType = TCreateType.Create() 
Local z:TCreateType = TCreateType.Create(100 , 20) 
Local w:TCreateType = TCreateType.Create(10 , 2 , "W") 

For Local tc:TCreateType = EachIn TCreateType.TypeList
	Print tc.Name + ": "+ tc.X  + ", " + tc.Y
Next


*EDIT*
Spent too long writing this reply :)