More Monkey to Blitzmax Confusion
BlitzMax Forums/BlitzMax Programming/More Monkey to Blitzmax Confusion
| ||
This is in Strict mode, I'm having problems with Monkey conversion. For now I just replaced Class with Types but this is the exactly code that works with MX.
Type Obj
Field x
Field y
Field _foo:Float = 1
Field _epivot:TEntity
Method New(foo:Float = 1.0, epivot:TEntity)
_foo = foo
_epivot = epivot
End Method
End TypeError: Identifier 'foo' not found (works without Strict) Error: Unable to convert from 'Int' to 'TEntity' (epivot variable) |
| ||
| In BlitzMax you can't override New method (or passing parameters to it) |
| ||
| Thanks degac! It kinda works with those adjustments Some questions though 1) Can I use Method instead of Function? Just to make the conversion as close as possible. 2) Inside the create function/method, there's an existing statement that uses self like CustomFunction( self._piv ) Apparently it works. Do I leave it or use the example Local n that I first declared. So the updated code is now Type Obj
Field x
Field y
Field _foo:Float = 1
Field _pivot:TEntity
Field _epivot:TEntity
Method New(foo:Float = 1.0, epivot:TEntity)
_foo = foo
_epivot = epivot
HideEntity( Self._pivot )
End Method
End Type |
| ||
| The legacy BlitzMax compiler doesn't support overloaded constructors (i.e. New(something)). The conventional way to get around this limitation/feature is to use a "Create" method or function. A create method generally returns an instance of itself, and is usually used in conjunction with New :
Local myObj:TObj = New TObj.Create(10, 100)
...
Type TObj
...
Method Create:TObj(x:int, y:int)
...
Return Self
End Method
...
End Type
Using a create function follows similar lines, except that you need to create an instance of the object yourself :
Local obj:TObj = TObj.Create(10, 100)
Type TObj
...
Function Create:TObj(x:int, y:int)
Local obj:TObj = New TObj
obj.x = x
... etc
Return obj
End Function
The method convention better supports polymorphism. Also, the latest BlitzMax NG allows you to use overloaded New(), just like in Monkey. But YMMV... |
| ||
| Thanks guys, I think I'm getting it now as some of my functions are not throwing errors anymore. I will work on other conversion stuff and see if this will push through. |