Arrays are fixed-size, zero-based, mutable collections of consecutive data elements all of the same types.
There are various ways to create an array. The simplest way is to list consecutive values between [|
and |]
and separated by semicolons (;
) as shown below.
let array1 = [| 1; 2; 3; 4; 5 |]
You can also put each element on a separate line, and in this case, the semicolon separator is optional.
let array2 =
[|
'a'
'b'
'c'
|]
The type of array elements is inferred from the literals used and must be consistent. If you specify different types in an array as shown below.
let array3 = [| 'a'; 2; 3 |]
It will give you the following error.
Error FS0001: All elements of an array must be of the same type as the first element, which here is 'char'. This element has type 'int'.
You can also use sequence expressions to create arrays. The following example creates an array of cubes of integers from 1 to 5.
let array4 = [| for i in 1 .. 10 -> i * i * i |]
You can create and initialize all elements of an array to zero by using Array.zeroCreate
.
let array5 : int array = Array.zeroCreate 5
It will create an array of 5 and initialize it to 0.
You can access array elements by using a dot operator (.
) and brackets ([
and ]
).
let val1 = array4.[0]
let val2 = array4.[1]
You can also access array elements using slice notation, which enables you to specify a subset of the array.
// Accesses elements from 0 to 3.
let ar1 = array4.[0..3]
// Accesses elements from the beginning of the array to 4.
let ar2 = array4.[..4]
// Accesses elements from 3 to the end of the array.
let ar3 = array4.[3..]
The type of all F# arrays is the .NET Framework type System.Array
. Therefore, F# arrays support all the functionality available in System.Array
.
The following are the most commonly used functions in the FSharp.Collections.Array
module.
Function | Description |
---|---|
Array.append | Builds a new array that contains the elements of the first array followed by the elements of the second array. |
Array.average | Returns the average of the elements in the array. |
Array.concat | Builds a new array that contains the elements of each of the given sequence of arrays. |
Array.contains | Tests if the array contains the specified element. |
Array.copy | Builds a new array that contains the elements of the given array. |
Array.create | Creates an array whose elements are all initially the given value. |
Array.distinct | Returns an array that contains no duplicate entries according to generic hash and equality comparisons on the entries. If an element occurs multiple times in the array then the later occurrences are discarded. |
Array.empty | Returns an empty array of the given type. |
Array.exists | Tests if any element of the array satisfies the given predicate. |
Array.fill | Fills a range of elements of the array with the given value. |
Array.find | Returns the first element for which the given function returns true . Raise KeyNotFoundException if no such element exists. |
Array.findIndex | Returns the index of the first element in the array that satisfies the given predicate. Raise KeyNotFoundException if none of the elements satisfy the predicate. |
Array.get | Gets an element from an array. |
Array.head | Returns the first element of the array. |
Array.init | Creates an array given the dimension and a generator function to compute the elements. |
Array.isEmpty | Returns true if the given array is empty, otherwise false. |
Array.item | Gets an element from an array. |
Array.iter | Applies the given function to each element of the array. |
Array.iteri | Applies the given function to each element of the array. The integer passed to the function indicates the index of the element. |
Array.length | Returns the length of an array. You can also use property arr.Length. |
Array.rev | Returns a new array with the elements in reverse order. |
Array.set | Sets an element of an array. |
Array.singleton | Returns an array that contains one item only. |
Array.skip | Builds a new array that contains the elements of the given array, excluding the first N elements. |
Array.sort | Sorts the elements of an array, returning a new array. Elements are compared using Operators.compare . |
Array.sortDescending | Sorts the elements of an array, in descending order, returning a new array. Elements are compared using Operators.compare. |
Array.splitAt | Splits an array into two arrays, at the given index. |
Array.splitInto | Splits the input array into at most count chunks. |
Array.sub | Builds a new array that contains the given subrange specified by starting index and length. |
Array.take | Returns the first N elements of the array. |
Array.toList | Builds a list from the given array. |
Array.toSeq | Builds a sequence from the given array. |
The following example uses some of these functions.
let arrayName = Array.create 5 0
Array.set arrayName 1 12 // Set element to given index using set function
for i in [0..arrayName.Length-1] do
printfn "%d" arrayName.[i]
F# allows us to create a multidimensional array. The multidimensional array is also known as the array of array. It can be 2 dimensional, 3 dimensional, or more.
The following example is using array2D operator to create a 2D array.
let arr = array2D [ [0; 0]; [0; 1];[1; 0]; [1; 1]]
for i = 0 to 3 do
for j = 0 to 1 do
printf "%d " arr.[i,j]
printf "\n"