[Gambas-user] static ? in variables

PICCORO McKAY Lenz mckaygerhard at ...626...
Thu Jun 15 20:00:15 CEST 2017


hi tobias, *the documentation are totally wrong.. due the documentation
makes a explicit citation to the concep in wikipedia*,that's why i ask so
many about it

now i propose to change by myselft that documentation to a proper paragraph
that translators can understand without transliterate the meaning..

and in any case thanks to your explication now i can understand the right
usage..

with this specific problem i can point the importance of a documentation,
i'll practice some all of your said and then try to correct better the wiki
doc

Lenz McKAY Gerardo (PICCORO)
http://qgqlochekone.blogspot.com

2017-06-15 13:48 GMT-04:00 Tobias Boege <taboege at ...626...>:

> On Thu, 15 Jun 2017, PICCORO McKAY Lenz wrote:
> > thanks in advance, but i have now more questions:
> > 2017-06-15 8:41 GMT-04:00 Tobias Boege <taboege at ...626...>:
> >
> > > No, the word "singleton" here just means you get an automatic instance
> of
> > > your class, i.e. you can use the class name as if it were an object.
> You
> > >
> > automatic instance?
> >
> > maybe its a translation problem, but i try to understant: wiki said here:
> > http://gambaswiki.org/wiki/lang/createstatic
> > in a tip:
> > "allows you to implement the object-oriented programming singleton
> pattern
> > <http://en.wikipedia.org/wiki/Singleton_pattern>."
> > and i understand by singleton pattern that a only one instance du i was a
> > J2EE programer:
> > "restricts the instantiation
> > <https://en.wikipedia.org/wiki/Instantiation_%28computer_science%29> of
> a
> > class <https://en.wikipedia.org/wiki/Class_%28computer_programming%29>
> to
> > one object <https://en.wikipedia.org/wiki/Object_%28computer_science%29
> >.
> > This is useful when exactly one object is needed to coordinate actions
> > across the system"
> >
> > so here are some things that i cannot understant and i think its
> something
> > with translation or?
> >
>
> It's not a translation error, it is that "singleton" has a different
> meaning
> in the paragraph you cite than it has in Gambas. Actually, the
> documentation
> should probably avoid the word "singleton", because it creates confusion
> with
> a more established notion of "singleton" (the one you cite).
>
> Now, let me tell you again what the documentation means when it says
> "singleton". When you put the CREATE STATIC keyword into the top of your
> class, then the class will be made "auto-creatable". This means that if
> your Gambas program uses the class name like an object, e.g. by accessing
> a non-static property or method over the *class* name (which doesn't make
> sense), then the interpreter will create an object out of this class
> (the so-called automatic instance -- because the interpreter creates it
> automatically for you in the background as soon as you need it) and uses
> this object in place of the class name.
>
> CREATE STATIC does *not* ensure that you can create *only* one instance
> of the class. This is not what "singleton" means in Gambas. You can create
> multiple objects out of a CREATE STATIC class.
>
> There are two famous examples of auto-creatable (CREATE STATIC) classes,
> which I can think of off the top of my head:
>
>   (1) Settings (gb.settings), if you ever worked with it, is a class of
>       which you can create as many objects as you like, right? But you can
>       also use the class name "Settings" as if it were an object, e.g.
>
>         Print Settings["Key"]
>
>       Here it looks you access a key "Key" of the class Settings, but this
>       doesn't make sense as the array accessors aren't static methods of
> the
>       Settings class. In fact, Settings, in this case, behaves as if you
>       created as Settings object behind the scenes which is linked to the
>       default configuration file path $XDG_CONFIG_HOME &/ Application.Name
> & ".conf".
>       This is precisely the automatic instance of the Settings class.
>
>   (2) An even more prominent example: every Form class is auto-creatable.
>       Have you ever wondered why, if you start your GUI project with
> startup
>       form "FMain", a window pops up? You only have a Form class but you
>       never created an object of this Form class, so where does this window
>       come from? This also is the automatic instance of your class FMain,
>       showing itself on startup. You can also write
>
>         FMain.Center()
>
>       to center your main window on the screen. The class name "FMain"
>       does not refer to the class, but to the automatic instance, an
>       *object* of class FMain that the interpreter created and that is
>       used behind the scenes.
>
> This is the "singleton" behaviour that the documentation describes.
>
> >
> > > Nothing extraordinary happens. You have a dynamic class with a static
> > > variable and you can use the class like an object (as well as create
> new
> > > objects of that class).
> > >
> > for the variable:
> >
> > public statis var as string
> >
> > vs
> >
> > public var as strings
> >
> > doc wiki said "will be shared with all the class" seems that there's no
> > diference based on your answer
> >
> >
>
> I don't understand your objection at all. Maybe the above explanation
> clears
> things up for you?
>
> Regards,
> Tobi
>
> --
> "There's an old saying: Don't change anything... ever!" -- Mr. Monk
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
>



More information about the User mailing list