Arrays: Difference between revisions

Content added Content deleted
No edit summary
Line 3,462: Line 3,462:
l[l] = l -- Again, any object can be used as an index. Even other tables
l[l] = l -- Again, any object can be used as an index. Even other tables
for i,v in next,l do print (i,v) end</lang>
for i,v in next,l do print (i,v) end</lang>

=={{header|M2000 Interpreter}}==
Here present Arrays of type variant (can be any type, object, pointer to object), and arrays of structures (unsigned numbers plus double and single, and strings including pointers to BSTR).
We can copy multiple items from an array to another array (ore the same) with statement Stock. We can copy from memory to strings and place them to other address.

<lang M2000 Interpreter>
Module CheckArray {
\\ Array with parenthesis in name
Dim A(10)=1
Global B(10)=1
For This {
Local A(10)=5
Print A(4)=5
}
Print A(4)=1
\\ Auto Array
M=(1,2,3,4,5)
Link M to M()
Print M(2)=3
Return M, 0:=100, 5-4:=300
\\ Retrieve an Element of an Array
k=Each(M, 1, 2)
\\ print 100 300
While k { Print Array(k),}
Print
Print Array(M, 2)=3
Print Array("M", 2)=3
Print Array(B(), 1)=1
\\ arrays are containers for every value/object/pointer
B(0):="Hello",100,"Good Morning", 200
\\ using set to make B$() global too
Set Link B() to B$()
Print B$(0), B(1), B$(2), B(3)
Swap B(0), B(2)
Swap B(1), B(3)
Print B$(0), B(1), B$(2), B(3)
Print B()
\\ Reduce B() to 4 elements - and change dimensions
\\ we have to redim the global array, using set to send line to console
\\ all globals are part of level 0, at console input.
Set Dim B(4)
Module CheckGlobal {
Print B$(0), B(1), B$(2), B(3)
}
CheckGlobal
Print B()
Dim BB(4)
\\ Copy 4 items from B() to BB(), from B(0), to BB(0)
Stock B(0) keep 4, BB(0)
Link BB() to BB$()
Print BB$(0), BB(1), BB$(2), BB(3)
\\ Arrays of structures in Buffers
Structure TwoByte {
{
ab as integer
}
a as byte
b as byte
}
Print Len(TwoByte) = 2
\ Use clear to clear memory
\\ Mem is a pointer to a Buffer object
Buffer Clear Mem as TwoByte*20
Print Len(Mem)=40
Return Mem, 0!ab:=0xFFAA
Print Eval(Mem, 0!a)=0xAA, Eval(Mem, 0!b)=0xFF
Return Mem, 0!b:=0xF2
Hex Eval(Mem,0!ab) ' print 0xF2AA
\\ Redim with preserve
Buffer Mem as TwoByte*40
\\ copy 40 bytes at index 20 (40 bytes from start)
Return Mem, 20:=Eval$(Mem, 0, 20*2)
Hex Eval(Mem,20!ab) ' print 0xF2AA
A(3)=Mem
Hex Eval(A(3),20!ab) ' print 0xF2AA
\\ now Mem change pointer
Clear Mem
Print Len(Mem)
\\ old Mem is in A(3)
Hex Eval(A(3),20!ab) ' print 0xF2AA
\\ we can change
Buffer Clear Mem as Integer * 200
Print Len(Mem)=400
Return Mem, 0:=Eval$(A(3), 0, 80)
Hex Eval(Mem,20) ' print 0xF2AA
\\ change type without use of clear
Buffer Mem as TwoByte * 200
Hex Eval(Mem,20!ab) ' print 0xF2AA
}
CheckArray
</lang>



=={{header|Maple}}==
=={{header|Maple}}==