[Gambas-user] class within a class with a key
Mayost Sharon
sharon at 455.co.il
Sun Apr 16 11:48:30 CEST 2023
---------- Original Message -----------
From: "Mayost Sharon" <sharon at 455.co.il>
To: Gambas Mailing List <user at lists.gambas-basic.org>
Sent: Sun, 16 Apr 2023 10:08:54 +0300
Subject: Re: [Gambas-user] class within a class with a key
> ---------- Original Message -----------
> From: "Mayost Sharon" <sharon at 455.co.il>
> To: Gambas Mailing List <user at lists.gambas-basic.org>
> Sent: Sat, 15 Apr 2023 21:58:10 +0300
> Subject: Re: [Gambas-user] class within a class with a key
>
> > ---------- Original Message -----------
> > From: Bruce Steers <bsteers4 at gmail.com>
> > To: Gambas Mailing List <user at lists.gambas-basic.org>
> > Sent: Fri, 14 Apr 2023 17:35:57 +0100
> > Subject: Re: [Gambas-user] class within a class with a key
> >
> > > On Fri, 14 Apr 2023 at 17:26, Bruce Steers <bsteers4 at gmail.com> wrote:
> > >
> > > > use Export to expose functions.
> > > >
> > > > I added the _get command to Class1.class
> > > >
> > > > now something like this works...
> > > >
> > > > Print gb_Class1["key_01"].student_01
> > > > Print gb_Class1["key_01"].student_02
> > > > Print gb_Class1["key_02"].student_01
> > > > Print gb_Class1["key_02"].student_02
> > > >
> > > >
> > >
> > > I also added a Keys String[] array to store the array positions.
> > > So each time it adds an item to the Class2[] Array it also adds the key to
> > > the Keys list.
> > >
> > > If you plan to remove items from the students[] array then you must remove
> > > the item from the Keys list too.
> > > Something like this in Class1.class ....
> > >
> > > Public Sub Remove(Key As String)
> > >
> > > Dim iPos As Integer = Keys.Find(Key)
> > > If iPos = -1 Then Error.Raise("Key not found, " & Key)
> > > $students.Remove(iPos)
> > > Keys.Remove(iPos)
> > >
> > > End
> > >
> > > BruceS
> > >
> > > > On Fri, 14 Apr 2023, 16:18 Mayost Sharon, <sharon at 455.co.il> wrote:
> > > >
> > > >> ---------- Original Message -----------
> > > >> From: Bruce Steers <bsteers4 at gmail.com>
> > > >> To: Gambas Mailing List <user at lists.gambas-basic.org>
> > > >> Sent: Fri, 14 Apr 2023 14:56:09 +0100
> > > >> Subject: Re: [Gambas-user] class within a class with a key
> > > >>
> > > >> > On Fri, 14 Apr 2023 at 13:55, Mayost Sharon <sharon at 455.co.il> wrote:
> > > >> >
> > > >> > > Hello
> > > >> > > I need help on how to make a class within a class
> > > >> > > Attached is an example that gives me an error because I'm missing
> > > >> > > something that I can't figure out what to do
> > > >> > >
> > > >> > > I want to reach a state of:
> > > >> > > Print gb_Class1.students["key_01"].student_01
> > > >> > > Print gb_Class1.students["key_01"].student_02
> > > >> > >
> > > >> > >
> > > >> > > Thank you
> > > >> > >
> > > >> > > ----[ http://gambaswiki.org/wiki/doc/netiquette ]----
> > > >> > >
> > > >> >
> > > >> > to use Keys like a collection you need to use Collection datatype.
> > > >> > Your Class2.class is not coded to work like a collection with Keys so it
> > > >> > does not work as you expect.
> > > >> >
> > > >> > I got your code working by making the Class1.class $students a
> > > >> collection
> > > >> > of Class2 objects.
> > > >> > Class2.class has no functions just the student_01 student_02 properties.
> > > >> >
> > > >> > BruceS
> > > >> ------- End of Original Message -------
> > > >>
> > > >> First of all thank you very much
> > > >>
> > > >> 1.
> > > >> When I type "." In the end so that it completes
> > > >> gb_Class1.students.
> > > >> This completes a collection list
> > > >> I wanted it to complement only what is in class 1
> > > >> .Add
> > > >> .students
> > > >>
> > > >> 2.
> > > >> When I type "." In the end so that it completes
> > > >> gb_Class1.students["key_01"].
> > > >> It does not complete anything
> > > >> Because it understands that it is a Variant variable
> > > >> I wanted it to complement only what is in class 2
> > > >> .student_01
> > > >> .student_02
> > > >>
> > > >>
> > ------- End of Original Message -------
> >
> > Many thanks again
> > on the attached code
> >
> > I'm trying to understand
> > I will report questions if I have any
> >
> > ----[ http://gambaswiki.org/wiki/doc/netiquette ]----
> ------- End of Original Message -------
>
> I checked your code
>
> 1. I wanted to get to:
> gb_Class1.students.Add.Add("key_01", "Gambas", "Visual Basic")
> not to
> gb_Class1.Add("key_01", "Gambas", "Visual Basic")
> It means that the KEY
> will be in CLASS2 which is students
>
> In gb_Class1 there will be only:
> gb_Class1.students
>
> In gb_Class1.students there will be only:
> gb_Class1.students.Add
>
> In gb_Class1.students[Key] there will be only:
> gb_Class1.students[Key].student_01
> gb_Class1.students[Key].student_02
>
> in Gambas documentation writes that the best example is:
> gb.settings
>
> he does a "virtual class"
>
> I tried changing your code:
> (new code attached)
> But it gives me an error
> I tried to understand and could not understand why
>
> Many thanks
------- End of Original Message -------
Hello
Sorry
in the previous file
There was a problem with the code because I did double ADD
Attached is a new example file that seems to work well
I mean I understood the subject of the CLASS correctly
I would love to know if there are any comments on the code
Many thanks for your help
-------------- next part --------------
A non-text attachment was scrubbed...
Name: class_03.zip
Type: application/zip
Size: 19065 bytes
Desc: not available
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20230416/2d10efea/attachment-0001.zip>
More information about the User
mailing list