Question: How do I access attributes and members in modules from outside

Hi,

I want to write my first module, and I failed!  I create an instance of the class (module?)

myList := TestModule(3);                    # works.

But I've no acess to the members, since I use export! What's wrong?

myList:-get_n;
myList:-set_n(20);
myList:-run();

Error, `myList` does not evaluate to a module
Error, `myList` does not evaluate to a module
Error, `myList` does not evaluate to a module


# *****************************************************************************

TestModule := module()
    export get_n, set_n, run;
    local  n, result, ModuleApply, profileRun;
    option package;
    description "A testmodule";

    # Constructor
    ModuleApply := proc(n)
        print("Calling of Module Apply...");
         thismodule:-n := n;
         result := [];
         profileRun();
         return result;
     end proc:


    # Implementation of member run
     run := proc()
         print("Calling of run...");
         dummy := [];
         for i from 1 to 20000 do
            dummy := [op(dummy), i]
         end do;
         result := TRUE;
    end proc;
    
    # Implementation of member runprofile;
     profileRun := proc()
          print("Call of profileRun...");
          CodeTools[Profiling]:-Profile(run);
           run();
           CodeTools[Profiling]:-PrintProfiles(run);
           CodeTools[Profiling]:-UnProfile(run);
     end proc;

     # getter
     get_n := proc()
         n;
     end proc;

     # setter
     set_n := proc(n)
         thismodule:-n := n;
     end proc;
     
end module;

 

Please Wait...