RosettaCodeData/Task/Pointers-and-references/M2000-Interpreter/pointers-and-references-6.m2000
2023-07-01 13:44:08 -04:00

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