Monkey Strict mode issue - docs ain't helping :/
Community Forums/Monkey Talk/Monkey Strict mode issue - docs ain't helping :/
| ||
Example taken from Docs, this works:
Import mojo.app
Import mojo.graphics
Import mojo.input
Class MyGame Extends App
Field x:Int=0
Field y:Int=0
Field playerShipSprite:Image
Method OnCreate()
'Load any images and sounds here
'ship.png must be found in your project's .data folder
playerShipSprite=LoadImage("ship.png")
SetUpdateRate 30
End
Method OnUpdate()
x=MouseX
y=MouseY
End
Method OnRender()
Cls
DrawImage playerShipSprite,x,y
End
End
Function Main()
New MyGame
End
But when I add THIS to the beginning: Strict It stops on "Method OnCreate" and says "syntax error" Try for example this: Strict Import mojo Function Main:Int() New MyApp Return 0 End Function Class MyApp Extends App Method OnCreate() End Method Method OnUpdate() End Method Method OnRender() End Method End Class If you remove "Strict", it works just fine. |
| ||
| if you put Strict after all the Imports, does it work ? |
| ||
| Strict needs to be on top. Aka, won't work (gets compile error then, pointing line "Strict") |
| ||
| Hum, may be is the content of the method OnCreate then. What happens if you comment out all the commands in the methods ? May be it does need a return type in each method, like in the Main:int() So may be Method OnCreate:int() would do the trick ? Last edited 2011 |
| ||
| Strict mode is... well... strict. You need to declare Method/Function returns, actually return them, etc. Last edited 2011 |
| ||
Works:Strict Import mojo Function Main:Int() New MyApp Return 0 End Function Class MyApp Extends App End Class Doesn't work: Strict Import mojo Function Main:Int() New MyApp Return 0 End Function Class MyApp Extends App Method OnCreate() End Method End Class Gets "compile error" on line "Method OnCreate()". |
| ||
| Ah, you wrote it while I was typing! :) Gotcha. Thanks. EDIT, yeh, so this works: Strict Import mojo Function Main:Int() New MyApp Return 0 End Function Class MyApp Extends App Method OnCreate:Int() Return 0 End Method End Class Last edited 2011 Last edited 2011 |
| ||
| Exactly, try Method OnCreate:int() |
| ||
| Yeh, well would be GOOD that Docs would use Strict mode. For example, when you check out OnCreate documentation, it has: "Method OnCreate()" No, "Method OnCreate:int()" |
| ||
| Agreed :) |
| ||
| I was falling over this too and decided not to use strict fro now. Thanks for the info. |
| ||
| Shouldn't it say also "Return 0:Int", since that has been always a problem in BlitzMax that it guesses the wrong number types, or perhaps that should be then ExtremeStrict. Or perhaps declaring a "Global Zero:Int=0:Int" variable would be better, then the compiler might notice that you are using the same memory location, and doesn't need to check the memory location for each copy/pasted 0 in the code seperately. Last edited 2011 |
| ||
| Here is an example of using Strict for your main/base code: Hope that helps:) L8r, Last edited 2011 |
| ||
| it seems that only End works no endif,endfunction,endclass right? Last edited 2011 Last edited 2011 |
| ||
| @Lumooja, I'm always amazed about your goddamn eagle eyes ;) ... although in this case, "Return 0" seems to work just fine. @slenkar: "End Class" works fine, so does "End Function" |
| ||
| oh ok i was using endclass with no space, thanks hopefully compilation error messages improve in the future |
| ||
If you dont want to return anything, use void:Function Main:Void() New MyApp End Function |