33 lines
1.2 KiB
Text
33 lines
1.2 KiB
Text
Module GroupPointers {
|
|
Group Zeta {
|
|
X=10, Y=20, A$=" ok"
|
|
Dim A(10)=1
|
|
Module ShowX10 {
|
|
Print .X*10, .A$
|
|
.Y++
|
|
}
|
|
}
|
|
Print Zeta.A(3)
|
|
L=Zeta ' a copy of Zeta to L
|
|
M->Zeta ' using weak reference inside
|
|
N->(Zeta) ' using real pointer, to a copy of Zeta
|
|
Link Zeta to P ' P is a reference of Zeta
|
|
List !
|
|
\\ we get a list (not at that order): Zeta[Group],L[Group], P[Group], M*[Group], N*[Group], plus all members of Zeta,L, P
|
|
\\ M and N have no operating members, Interpreter make them at demand (using the pointer, for temporary use)
|
|
Modules ?
|
|
\\ We get a list: Zeta.ShowX10, L.ShowX10, P.ShowX10
|
|
\\ Also we don't have operating modules for M and N, but at demand we get them (for temporary use)
|
|
P.A(2)+=10
|
|
Print P.A(2)=Zeta.A(2) ' True because its member is a reference
|
|
Print L.A(2)=1 ' True
|
|
Print M=>A(2)=Zeta.A(2) 'True
|
|
Print N=>A(2)=Zeta.A(2) 'False
|
|
Print N=>A(2)=L.A(2) ' True
|
|
N->0& ' Null
|
|
N->M ' pointers can point to another group.
|
|
Print N=>A(2)=11
|
|
N=>ShowX10
|
|
Print Zeta.Y=21
|
|
}
|
|
GroupPointers
|