Page 3 of 3

Re: Modules

Posted: Wed Jul 03, 2013 7:30 pm
by Little John
No worries!
I'm glad that the problem is solved. :-)

Re: Modules

Posted: Wed Jul 17, 2013 9:20 pm
by WilliamL
I think I'm getting the idea.

I'd like to see the Help file updated with Module commands and explanations.

I see the Module commands in 'Folding' but Module commands are not added to 'Indentation' (they can be added to Indentation and work fine).

Re: Modules

Posted: Sat Jul 20, 2013 5:52 pm
by Michael Vogel
freak wrote:[...] There is no risk of things like global variables or procedure names conflicting with other code parts.[...]
Not sure to understand the module concept fully and have no time for playing around for the next four weeks or so, but I read some postings and TI-994A brought an example which seems to show a conflict for me:

Code: Select all

#constant1 = "Hello"
Define a.f = 1.23

Procedure test()
  Debug #constant1 + " World!"
EndProcedure

DeclareModule myModule
  #constant1 = 100
  Define a.i = 1 
EndDeclareModule

Module myModule
  #constant2 = 200
  a = 2
 
  Procedure test(param)
    ProcedureReturn param + #constant1
  EndProcedure
EndModule

UseModule myModule           ;raises error
  Debug #constant1
  Debug a
  Debug test(22)
UnuseModule myModule
As I understood it, the compiler can't decide, if a is a global variable or from myModule and so on, are am right?

If UseModule works similar to With*, will Debug ::a work instead of Debug a ?

____
*) Structure aStru
a.i
b.i
EndStructure

a.astru
a\b=222
b=2

With a
Debug b
Debug \b
EndWith

Re: Modules

Posted: Sat Jul 20, 2013 6:18 pm
by TI-994A
Michael Vogel wrote:
freak wrote:[...] There is no risk of things like global variables or procedure names conflicting with other code parts.[...]
As I understood it, the compiler can't decide, if a is a global variable or from myModule and so on, are am right?

If UseModule works similar to With*, will Debug ::a work instead of Debug a ?
Hello Michael Vogel. Your snippet had a number of name conflicts, and a missing module procedure. And once the UseModule directive is used, the double colons aren't required, although it can still be used with the full module name if desired, like this:

Code: Select all

DeclareModule myModule
  a = 123
EndDeclareModule

UseModule myModule
Debug a
Debug myModule::a