In addition to the examples given before, here an example of a very common use case, namely, a structure defined in a module and called in other modules.
Code: Select all
DeclareModule module1
Structure Writer
name.s
surname.s
EndStructure
;.....
EndDeclareModule
Module module1
;here can be empty, but it must exist
;......
EndModule
DeclareModule module2
;......
EndDeclareModule
Module module2
Define w1.module1::Writer
w1\name="Isaac"
w1\surname="Asimov"
Debug w1\name ;=Isaac ;it works
;Define w2.Writer ; ERROR!
EndModule
Above, it must be noticed
module1:: before structure name.
"
module1::Writer" is so called fully-qualified name for structure
Writer
By inserting line of code:
UseModule module1, in declaration of
module3, then
"
module1::" before structure name
Writer may be left out, meaning that fully-qualified name for structure
Writer is not required in this case
See below:
Code: Select all
DeclareModule module3
UseModule module1
;......
EndDeclareModule
Module module3
Define w1.Writer
;it works because line of code: "UseModule module1 " (where structure Writer is defined)
;is inserted in module3 declaration
;As shown in previous posts,there is no confict between name of the variables w1 from module2 and w1 from module3,
;because they are used inside different modules
w1\name="Mark"
w1\surname="Twain"
Debug w1\name ;=Mark, it works
EndModule