REBOL 3 Docs | Guide | Concepts | Functions | Datatypes | Errors |
TOC < Back Next > | Updated: 6-Feb-2009 Edit History |
Blocks are used for arrays.
An example of a statically defined two dimensional array is:
arr: [ [1 2 3 ] [a b c ] [$10 $20 $30] ]
You can obtain the values of an array with the series extraction functions:
probe first arr
[1 2 3]
probe pick arr 3
[$10.00 $20.00 $30.00]
probe first first arr
1
You can also use paths to obtain values from the array:
probe arr/1
[1 2 3]
probe arr/3
[$10.00 $20.00 $30.00]
probe arr/3/2
$20.00
Paths can also be used to change the values in an array:
arr/1/2: 20
probe arr/1
[1 20 3]
arr/3/2: arr/3/1 + arr/3/3
probe arr/3/2
$40.00
The array function creates arrays dynamically. The function takes an argument that is either an integer or a block of integers and returns a block that is the array. By default, the cells of an array are initialized to none!. To initialize array cells to some other value, use the /initial refinement explained in the next section.
When array is supplied with a single integer, a one-dimensional array of that size is returned:
arr: array 5
probe arr
[none none none none none]
When a block of integers is provided, the array has multiple dimensions. Each integer provides the size of the corresponding dimension.
Here is an example of a two dimensional array that has six cells, two rows of three columns:
arr: array [2 3]
probe arr
[[none none none] [none none none]]
This can be made into a three dimensional array by adding another integer to the block:
arr: array [2 3 2] foreach lst arr [probe lst] [[none none] [none none] [none none]] [[none none] [none none] [none none]]
The block of integers that is passed to array can be as big as your memory will support.
To initialize the cells of an array to a value other than none!, use the /initial refinement. This refinement takes one argument: the initial value. Here are some examples:
arr: array/initial 5 0
probe arr
[0 0 0 0 0]
arr: array/initial [2 3] 0
probe arr
[[0 0 0] [0 0 0]]
arr: array/initial 3 "a"
probe arr
["a" "a" "a"]
arr: array/initial [3 2] 'word
probe arr
[[word word] [word word] [word word]]
arr: array/initial [3 2 1] 11:11
probe arr
[[[11:11] [11:11]] [[11:11] [11:11]] [[11:11] [11:11]]]
TOC < Back Next > | REBOL.com - WIP Wiki | Feedback Admin |