Localising a Namespace within a Class
3 posts
• Page 1 of 1
Localising a Namespace within a Class
For personal reasons*, I dislike Classes and would prefer not to use them. So I am not well versed in their nuances.
But I am using MiServer to make some of my code available via web browsers, and MiServer requires the code being used is supplied as a class. (And MiServer does this job VERY well. Thank you Brian.)
One of my coding preferences is to have NO global variables in the workspace. So I will often create a namespace (called #.G) to hold any "global" variables required (I used to refer to these item as "semi-global"). I will create and localise "G" in the top level function.
So far so good.
However, when running under MiServer, there is no "top level function" for my code to localise "G" in, as it all runs under the class. (The "top" function within the class that MiServer calls is "Compose", but localising the namespace "G" within Compose fails. I think what is required is the equivalent of a "local persistent variable", a "local persistent Namespace".)
So my question is : "Is there a way I can localise #.G within the class" (via a class "constructor" function, or a Field (Public or otherwise) maybe ?).
Currently (because of my Class dislike) the "Class" I use under MiServer contains NO functions, (these are provided via an ":Include" statement) and lots of Fields (and I dont really know how to used these Fields or if I need them at all).
My code is currently running under MiServer without a hitch, until after I have "Stop(ed)" the server. Then I run into problems trying to load a different workspace without first doing a ")CLEAR".
(A ")RESET" I find insufficient, as plays havoc with my code in ⎕SE.) But that is a different problem for another day/year!
Thanking anyone who can help.
Hope you have had, and still are having a great holiday season.
Ray
*I'm stuck in my ways.
But I am using MiServer to make some of my code available via web browsers, and MiServer requires the code being used is supplied as a class. (And MiServer does this job VERY well. Thank you Brian.)
One of my coding preferences is to have NO global variables in the workspace. So I will often create a namespace (called #.G) to hold any "global" variables required (I used to refer to these item as "semi-global"). I will create and localise "G" in the top level function.
So far so good.
However, when running under MiServer, there is no "top level function" for my code to localise "G" in, as it all runs under the class. (The "top" function within the class that MiServer calls is "Compose", but localising the namespace "G" within Compose fails. I think what is required is the equivalent of a "local persistent variable", a "local persistent Namespace".)
So my question is : "Is there a way I can localise #.G within the class" (via a class "constructor" function, or a Field (Public or otherwise) maybe ?).
Currently (because of my Class dislike) the "Class" I use under MiServer contains NO functions, (these are provided via an ":Include" statement) and lots of Fields (and I dont really know how to used these Fields or if I need them at all).
My code is currently running under MiServer without a hitch, until after I have "Stop(ed)" the server. Then I run into problems trying to load a different workspace without first doing a ")CLEAR".
(A ")RESET" I find insufficient, as plays havoc with my code in ⎕SE.) But that is a different problem for another day/year!
Thanking anyone who can help.
Hope you have had, and still are having a great holiday season.
Ray
*I'm stuck in my ways.
Ray Cannon
Please excuse any smelling pisstakes.
Please excuse any smelling pisstakes.
-
ray - Posts: 221
- Joined: Wed Feb 24, 2010 12:24 am
- Location: Blackwater, Camberley. UK
Re: Localising a Namespace within a Class
Hi Ray, Merry Christmas!
Is this the kind of thing you are looking for?
Is this the kind of thing you are looking for?
- Code: Select all
:Class MyClass
:Field Shared G←⎕NS ''
∇ setX arg
:Access Public Instance
G.X←arg
∇
∇ r←getX
:Access Public Instance
r←G.X
∇
:EndClass
i1←⎕NEW MyClass
i2←⎕NEW MyClass
i1.setX 42 ⍝ Set in one instance
i2.getX ⍝ Get from the other
42
-
Morten|Dyalog - Posts: 453
- Joined: Tue Sep 09, 2008 3:52 pm
Re: Localising a Namespace within a Class
Hi Morten, Happy New Year!
Thank you so much, this is exactly what I needed!
Ray
Thank you so much, this is exactly what I needed!
Ray
Ray Cannon
Please excuse any smelling pisstakes.
Please excuse any smelling pisstakes.
-
ray - Posts: 221
- Joined: Wed Feb 24, 2010 12:24 am
- Location: Blackwater, Camberley. UK
3 posts
• Page 1 of 1
Who is online
Users browsing this forum: No registered users and 1 guest
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group