Can you pass variables to Method New() ?
BlitzMax Forums/BlitzMax Programming/Can you pass variables to Method New() ?
| ||
Title says it all. I searched, but I cannot find this topic mentioned anywhere. I tried to do this: But naturally, this doesn't work. How can I pass a variable to a New() call to customize the variables on creation? EDIT: Oh, and hi everybody! I've taken a 2 year hiatus from programming, but I loved this place and I'm glad to be coding again. I used to be "Arrant Drew", if anyone remembers or cares. |
| ||
No, you cannot. Here's a way I like to do it (stolen from Brucey! -- this example contains other practices): |
| ||
Wow, that's quite the lengthy example there. It's elegant, to be sure. But it doesn't look like it's doing anything more than I already do: Thank you for your answer, but I really dislike using resource-intensive lists(Arrays do the same thing, but with less overhead) and I suppose calling an embedded function does what I need it to. |
| ||
The use of any Create/DeSerialize feature as a method is useful for coding purposes (less code when using instance creators as a method). ie, instead of having to create a new object and refer to its fields and methods through the object you can access them directly, especially with less code: P.S. The last code you posted is invalid, you are attempting to access the field 'kind' from a function in a type (you can only do that with an instance of a type). |
| ||
@Dubious: Yeah as Plash says your code won't work properly, you need this:Const OCTOPUS:Int = 1 Type TEnemyType Field kind:Int Function create:TEnemyType(kindOfEnemy:Int=1) Local e:TEnemyType = new TEnemyType e.kind = kindOfEnemy Return e EndFunction EndType Local enemy:TEnemyType = TEnemyType.create(OCTOPUS) |