type functions and globals

BlitzMax Forums/BlitzMax Programming/type functions and globals

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.

A function in a type is just as a function outside?
Sort of. You refer to it with the syntax:
type_name.function_name

Example:
Type test

'Global
Global myglobal

'Constant
Const speed = 5

'Field
field x,y

'Method
method Move()
x = x + speed
end method

'Function
Function MyFunc()
print "Hello"
end function

End Type


Now, you refer to the function MyFunc in this way:
test.MyFunc()

Who can access a global in a field?

If I get what you mean, you can access any type global variable in the same way you access a type function, so:

print test.myglobal

The main difference between Methods and Functions is that a Method can be fired only when you have an instance of the type, because a Method works with type elements, so:
test.MyFunc() -----> Correct call to a function
t.Move -----> this gives a compile error

'==============================
test.MyFunc() -----> Correct call to a function
t:test = new test ----> New instance created
t.Move -----> Correct call to a method


In the same way are Type Fields and Type Globals or Constants: Fields can be set or accessed only when you have an instance of the type, while Global and Constants can be always accessed - that is, you don't need an instance of the type to access it:
Print test.myglobal
Print test.speed


There's some good tutorial around here, check it out for example:
http://www.blitzbasic.com/Community/posts.php?topic=42519

Hope that has sense for you,
Sergio.