|REBOL 3 Docs||Guide||Concepts||Functions||Datatypes||Errors|
|TOC < Back Next >||Updated: 6-Feb-2009 Edit History|
An object provides a good way to encapsulate a group of variables that should not appear at the global level. When function variables are defined as globals, they can unintentionally be modified by other functions.
The solution to this problem of global variables is to wrap an object around both the variables and the function. When that is done, the function can still access the variables, but the variables cannot be accessed globally. For example:
Bank: make object! [ last-account: 89431 bank-bonus: $10.00 set 'make-account func [ "Returns a new account object" f-name [string!] "First name" l-name [string!] "Last name" start-balance [money!] "Starting balance" ][ last-account: last-account + 1 make bank-account [ first-name: f-name last-name: l-name account: last-account balance: start-balance + bank-bonus ] ] ]
In this example, the variables are safe from accidental modification. Notice that the make-account function was set to a variable using the set function, rather than using a variable definition. This was done to make it a global function. The function can be used in the same way as functions set with a variable definition, but does not require an object path:
bob: make-account "Bob" "Baker" $4000
|TOC < Back Next >||REBOL.com - WIP Wiki||Feedback Admin|