|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|