Array (F#)
Array adalah kumpulan elemen data berurutan dengan ukuran tetap, berbasis nol, dan dapat diubah yang semuanya bertipe sama.
Membuat array
Anda dapat membuat array dengan beberapa cara. Anda dapat membuat array kecil dengan mencantumkan nilai berurutan antara [|
dan |]
, serta dipisahkan oleh titik koma, seperti yang ditunjukkan dalam contoh berikut.
let array1 = [| 1; 2; 3 |]
Anda juga dapat menempatkan setiap elemen pada baris terpisah, dalam hal ini pemisah titik koma bersifat opsional.
let array1 =
[|
1
2
3
|]
Jenis elemen array disimpulkan dari harfiah yang digunakan dan harus konsisten.
// This is an array of 3 integers.
let array1 = [| 1; 2; 3 |]
// This is an array of a tuple of 3 integers.
let array2 = [| 1, 2, 3 |]
Kode berikut menyebabkan kesalahan karena 3.0 adalah float dan 1 dan 2 adalah bilangan bulat.
// Causes an error. The 3.0 (float) cannot be converted to integer implicitly.
// let array3 = [| 1; 2; 3.0 |]
Kode berikut menyebabkan kesalahan juga karena 1,2
merupakan tuple dan 3
merupakan bilangan bulat.
// Causes an error too. The 3 (integer) cannot be converted to tuple implicitly.
// let array4 = [| 1, 2; 3 |]
Anda juga dapat menggunakan ekspresi urutan untuk membuat array. Berikut ini adalah contoh yang membuat array kuadrat bilangan bulat dari 1 hingga 10.
let array3 = [| for i in 1 .. 10 -> i * i |]
Untuk membuat array di mana semua elemen diinisialisasi ke nol, gunakan Array.zeroCreate
.
let arrayOfTenZeroes : int array = Array.zeroCreate 10
Elemen akses
Anda dapat mengakses elemen array dengan menggunakan tanda kurung siku ([
dan ]
). Sintaks titik asli (.[index]
) masih didukung, tetapi tidak lagi direkomendasikan pada F# 6.0.
array1[0]
Indeks array dimulai dari 0.
Anda juga dapat mengakses elemen array dengan menggunakan notasi potongan, yang memungkinkan Anda menentukan subrentang array. Contoh notasi potongan mengikuti.
// Accesses elements from 0 to 2.
array1[0..2]
// Accesses elements from the beginning of the array to 2.
array1[..2]
// Accesses elements from 2 to the end of the array.
array1[2..]
Saat notasi potongan digunakan, salinan baru array dibuat.
Jenis dan modul array
Jenis semua array F# adalah jenis .NET Framework System.Array. Oleh karena itu, array F# mendukung semua fungsionalitas yang tersedia di System.Array.
ModulArray
ini mendukung operasi pada array satu dimensi. Modul Array2D
, Array3D
, dan Array4D
berisi fungsi yang mendukung operasi pada array masing-masing dua, tiga, dan empat dimensi. Anda dapat membuat array pangkat yang lebih besar dari empat dengan menggunakan System.Array.
Fungsi sederhana
Array.get
mendapatkan elemen. Array.length
memberikan panjang array. Array.set
mengatur elemen ke nilai tertentu. Contoh kode berikut menggambarkan penggunaan fungsi-fungsi ini.
let array1 = Array.create 10 ""
for i in 0 .. array1.Length - 1 do
Array.set array1 i (i.ToString())
for i in 0 .. array1.Length - 1 do
printf "%s " (Array.get array1 i)
Outputnya sebagai berikut.
0 1 2 3 4 5 6 7 8 9
Fungsi yang membuat array
Beberapa fungsi membuat array tanpa memerlukan array yang ada. Array.empty
membuat array baru yang tidak berisi elemen apa pun. Array.create
membuat array dengan ukuran tertentu dan mengatur semua elemen ke nilai yang disediakan. Array.init
membuat array, mengingat dimensi dan fungsi untuk menghasilkan elemen. Array.zeroCreate
membuat array di mana semua elemen diinisialisasi ke nilai nol untuk jenis array. Kode berikut menunjukkan fungsi-fungsi ini.
let myEmptyArray = Array.empty
printfn "Length of empty array: %d" myEmptyArray.Length
printfn "Array of floats set to 5.0: %A" (Array.create 10 5.0)
printfn "Array of squares: %A" (Array.init 10 (fun index -> index * index))
let (myZeroArray : float array) = Array.zeroCreate 10
Outputnya sebagai berikut.
Length of empty array: 0
Area of floats set to 5.0: [|5.0; 5.0; 5.0; 5.0; 5.0; 5.0; 5.0; 5.0; 5.0; 5.0|]
Array of squares: [|0; 1; 4; 9; 16; 25; 36; 49; 64; 81|]
Array.copy
membuat array baru yang berisi elemen yang disalin dari array yang ada. Perhatikan bahwa salinannya adalah salinan dangkal, yang berarti bahwa jika jenis elemen adalah jenis referensi, hanya referensi yang disalin, bukan objek yang mendasar. Contoh kode berikut menggambarkan hal ini.
open System.Text
let firstArray : StringBuilder array = Array.init 3 (fun index -> new StringBuilder(""))
let secondArray = Array.copy firstArray
// Reset an element of the first array to a new value.
firstArray[0] <- new StringBuilder("Test1")
// Change an element of the first array.
firstArray[1].Insert(0, "Test2") |> ignore
printfn "%A" firstArray
printfn "%A" secondArray
Output dari kode sebelumnya adalah sebagai berikut:
[|Test1; Test2; |]
[|; Test2; |]
String Test1
hanya muncul di array pertama karena operasi pembuatan elemen baru menimpa referensi di firstArray
tetapi tidak memengaruhi referensi asli ke string kosong yang masih ada di secondArray
. String Test2
muncul di kedua array karena operasi Insert
pada jenis System.Text.StringBuilder memengaruhi objek System.Text.StringBuilder yang mendasarinya, yang dirujuk di kedua array.
Array.sub
menghasilkan array baru dari subrentang array. Anda menentukan subrentang dengan memberikan indeks awal dan panjangnya. Kode berikut menunjukkan penggunaan Array.sub
.
let a1 = [| 0 .. 99 |]
let a2 = Array.sub a1 5 10
printfn "%A" a2
Output menunjukkan bahwa subarray dimulai pada elemen 5 dan berisi 10 elemen.
[|5; 6; 7; 8; 9; 10; 11; 12; 13; 14|]
Array.append
membuat array baru dengan menggabungkan dua array yang ada.
Kode berikut menunjukkan Array.append.
printfn "%A" (Array.append [| 1; 2; 3|] [| 4; 5; 6|])
Output dari kode sebelumnya adalah sebagai berikut.
[|1; 2; 3; 4; 5; 6|]
Array.choose
memilih elemen array untuk disertakan dalam array baru. Kode berikut menunjukkan Array.choose
. Perhatikan bahwa jenis elemen array tidak harus cocok dengan jenis nilai yang dikembalikan dalam jenis opsi. Dalam contoh ini, jenis elemennya adalah int
dan opsinya adalah hasil dari fungsi polinomial, elem*elem - 1
, sebagai angka titik mengambang.
printfn "%A" (Array.choose (fun elem -> if elem % 2 = 0 then
Some(float (elem*elem - 1))
else
None) [| 1 .. 10 |])
Output dari kode sebelumnya adalah sebagai berikut.
[|3.0; 15.0; 35.0; 63.0; 99.0|]
Array.collect
menjalankan fungsi tertentu pada setiap elemen array dari array yang ada dan kemudian mengumpulkan elemen yang dihasilkan oleh fungsi tersebut dan menggabungkannya ke dalam array baru. Kode berikut menunjukkan Array.collect
.
printfn "%A" (Array.collect (fun elem -> [| 0 .. elem |]) [| 1; 5; 10|])
Output dari kode sebelumnya adalah sebagai berikut.
[|0; 1; 0; 1; 2; 3; 4; 5; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10|]
Array.concat
mengambil urutan array dan menggabungkannya menjadi satu array. Kode berikut menunjukkan Array.concat
.
Array.concat [ [|0..3|] ; [|4|] ]
//output [|0; 1; 2; 3; 4|]
Array.concat [| [|0..3|] ; [|4|] |]
//output [|0; 1; 2; 3; 4|]
Array.filter
mengambil fungsi kondisi Boolean dan menghasilkan array baru yang hanya berisi elemen-elemen tersebut dari array input yang kondisinya benar. Kode berikut menunjukkan Array.filter
.
printfn "%A" (Array.filter (fun elem -> elem % 2 = 0) [| 1 .. 10|])
Output dari kode sebelumnya adalah sebagai berikut.
[|2; 4; 6; 8; 10|]
Array.rev
menghasilkan array baru dengan membalikkan urutan array yang ada. Kode berikut menunjukkan Array.rev
.
let stringReverse (s: string) =
System.String(Array.rev (s.ToCharArray()))
printfn "%A" (stringReverse("!dlrow olleH"))
Output dari kode sebelumnya adalah sebagai berikut.
"Hello world!"
Anda dapat dengan mudah menggabungkan fungsi dalam modul array yang mengubah array dengan menggunakan operator alur (|>
), seperti yang ditunjukkan dalam contoh berikut.
[| 1 .. 10 |]
|> Array.filter (fun elem -> elem % 2 = 0)
|> Array.choose (fun elem -> if (elem <> 8) then Some(elem*elem) else None)
|> Array.rev
|> printfn "%A"
Outputnya adalah
[|100; 36; 16; 4|]
Array multidimensi
Array multidimensi dapat dibuat, tetapi tidak ada sintaks untuk menulis harfiah array multidimensi. Gunakan operator array2D
untuk membuat array dari urutan elemen array. Urutannya dapat berupa array atau daftar harfiah. Misalnya, kode berikut membuat array dua dimensi.
let my2DArray = array2D [ [ 1; 0]; [0; 1] ]
Anda juga dapat menggunakan fungsi Array2D.init
untuk menginisialisasi array dari dua dimensi, dan fungsi serupa tersedia untuk array tiga dan empat dimensi. Fungsi-fungsi ini mengambil fungsi yang digunakan untuk membuat elemen. Untuk membuat array dua dimensi yang berisi elemen yang diatur ke nilai awal alih-alih menentukan fungsi, gunakan fungsi Array2D.create
, yang juga tersedia untuk array hingga empat dimensi. Contoh kode berikut pertama-tama menunjukkan cara membuat array dari array yang berisi elemen yang diinginkan, dan kemudian menggunakan Array2D.init
untuk menghasilkan array dua dimensi yang diinginkan.
let arrayOfArrays = [| [| 1.0; 0.0 |]; [|0.0; 1.0 |] |]
let twoDimensionalArray = Array2D.init 2 2 (fun i j -> arrayOfArrays[i][j])
Sintaks pengindeksan dan pemotongan array didukung untuk array hingga pangkat 4. Saat Anda menentukan indeks dalam beberapa dimensi, Anda menggunakan koma untuk memisahkan indeks, seperti ilustrasi dalam contoh kode berikut.
twoDimensionalArray[0, 1] <- 1.0
Jenis array dua dimensi ditulis sebagai <type>[,]
(misalnya, int[,]
, double[,]
), dan jenis array tiga dimensi ditulis sebagai <type>[,,]
, dan sebagainya untuk array dimensi yang lebih tinggi.
Hanya subset fungsi yang tersedia untuk array satu dimensi yang juga tersedia untuk array multidimensi.
Pemotongan array dan array multidimensi
Dalam array dua dimensi (matriks), Anda dapat mengekstrak sub-matriks dengan menentukan rentang dan menggunakan karakter wildcard (*
) untuk menentukan seluruh baris atau kolom.
// Get rows 1 to N from an NxM matrix (returns a matrix):
matrix[1.., *]
// Get rows 1 to 3 from a matrix (returns a matrix):
matrix[1..3, *]
// Get columns 1 to 3 from a matrix (returns a matrix):
matrix[*, 1..3]
// Get a 3x3 submatrix:
matrix[1..3, 1..3]
Anda dapat menguraikan array multidimensi menjadi subarray dengan dimensi yang sama atau lebih rendah. Misalnya, Anda dapat memperoleh vektor dari matriks dengan menentukan satu baris atau kolom.
// Get row 3 from a matrix as a vector:
matrix[3, *]
// Get column 3 from a matrix as a vector:
matrix[*, 3]
Anda dapat menggunakan sintaks pemotongan ini untuk jenis yang mengimplementasikan operator akses elemen dan metode GetSlice
yang kelebihan beban. Misalnya, kode berikut membuat jenis Matriks yang membungkus array F# 2D, mengimplementasikan properti Item untuk menyediakan dukungan untuk pengindeksan array, dan mengimplementasikan tiga versi GetSlice
. Jika Anda dapat menggunakan kode ini sebagai templat untuk jenis matriks, Anda dapat menggunakan semua operasi pemotongan yang dijelaskan di bagian ini.
type Matrix<'T>(N: int, M: int) =
let internalArray = Array2D.zeroCreate<'T> N M
member this.Item
with get(a: int, b: int) = internalArray[a, b]
and set(a: int, b: int) (value:'T) = internalArray[a, b] <- value
member this.GetSlice(rowStart: int option, rowFinish : int option, colStart: int option, colFinish : int option) =
let rowStart =
match rowStart with
| Some(v) -> v
| None -> 0
let rowFinish =
match rowFinish with
| Some(v) -> v
| None -> internalArray.GetLength(0) - 1
let colStart =
match colStart with
| Some(v) -> v
| None -> 0
let colFinish =
match colFinish with
| Some(v) -> v
| None -> internalArray.GetLength(1) - 1
internalArray[rowStart..rowFinish, colStart..colFinish]
member this.GetSlice(row: int, colStart: int option, colFinish: int option) =
let colStart =
match colStart with
| Some(v) -> v
| None -> 0
let colFinish =
match colFinish with
| Some(v) -> v
| None -> internalArray.GetLength(1) - 1
internalArray[row, colStart..colFinish]
member this.GetSlice(rowStart: int option, rowFinish: int option, col: int) =
let rowStart =
match rowStart with
| Some(v) -> v
| None -> 0
let rowFinish =
match rowFinish with
| Some(v) -> v
| None -> internalArray.GetLength(0) - 1
internalArray[rowStart..rowFinish, col]
module test =
let generateTestMatrix x y =
let matrix = new Matrix<float>(3, 3)
for i in 0..2 do
for j in 0..2 do
matrix[i, j] <- float(i) * x - float(j) * y
matrix
let test1 = generateTestMatrix 2.3 1.1
let submatrix = test1[0..1, 0..1]
printfn $"{submatrix}"
let firstRow = test1[0,*]
let secondRow = test1[1,*]
let firstCol = test1[*,0]
printfn $"{firstCol}"
Fungsi Boolean pada array
Fungsi Array.exists
dan Array.exists2
elemen pengujian masing-masing dalam satu atau dua array. Fungsi-fungsi ini mengambil fungsi pengujian dan mengembalikan true
jika ada elemen (atau pasangan elemen untuk Array.exists2
) yang memenuhi kondisi.
Kode berikut menunjukkan penggunaan Array.exists
dan Array.exists2
. Dalam contoh ini, fungsi baru dibuat dengan hanya menerapkan salah satu argumen, yaitu argumen fungsi pada kasus ini.
let allNegative = Array.exists (fun elem -> abs (elem) = elem) >> not
printfn "%A" (allNegative [| -1; -2; -3 |])
printfn "%A" (allNegative [| -10; -1; 5 |])
printfn "%A" (allNegative [| 0 |])
let haveEqualElement = Array.exists2 (fun elem1 elem2 -> elem1 = elem2)
printfn "%A" (haveEqualElement [| 1; 2; 3 |] [| 3; 2; 1|])
Output dari kode sebelumnya adalah sebagai berikut.
true
false
false
true
Demikian pula, fungsi Array.forall
menguji array untuk menentukan apakah setiap elemen memenuhi kondisi Boolean. Variasi Array.forall2
melakukan hal yang sama dengan menggunakan fungsi Boolean yang melibatkan elemen dengan dua array dengan panjang yang sama. Contoh kode berikut menggambarkan penggunaan fungsi-fungsi ini.
let allPositive = Array.forall (fun elem -> elem > 0)
printfn "%A" (allPositive [| 0; 1; 2; 3 |])
printfn "%A" (allPositive [| 1; 2; 3 |])
let allEqual = Array.forall2 (fun elem1 elem2 -> elem1 = elem2)
printfn "%A" (allEqual [| 1; 2 |] [| 1; 2 |])
printfn "%A" (allEqual [| 1; 2 |] [| 2; 1 |])
Berikut output untuk contoh-contoh ini.
false
true
true
false
Array pencarian
Array.find
mengambil fungsi Boolean dan mengembalikan elemen pertama yang fungsinya mengembalikan true
, atau memunculkan System.Collections.Generic.KeyNotFoundException jika tidak ada elemen yang memenuhi kondisi yang ditemukan. Array.findIndex
seperti Array.find
, kecuali mengembalikan indeks elemen alih-alih elemen itu sendiri.
Kode berikut menggunakan Array.find
dan Array.findIndex
untuk menemukan angka yang merupakan kuadrat sempurna dan kubik sempurna.
let arrayA = [| 2 .. 100 |]
let delta = 1.0e-10
let isPerfectSquare (x:int) =
let y = sqrt (float x)
abs(y - round y) < delta
let isPerfectCube (x:int) =
let y = System.Math.Pow(float x, 1.0/3.0)
abs(y - round y) < delta
let element = Array.find (fun elem -> isPerfectSquare elem && isPerfectCube elem) arrayA
let index = Array.findIndex (fun elem -> isPerfectSquare elem && isPerfectCube elem) arrayA
printfn "The first element that is both a square and a cube is %d and its index is %d." element index
Outputnya sebagai berikut.
The first element that is both a square and a cube is 64 and its index is 62.
Array.tryFind
seperti Array.find
, kecuali bahwa hasilnya adalah jenis opsi, dan mengembalikan None
jika tidak ada elemen yang ditemukan. Array.tryFind
harus digunakan alih-alih Array.find
ketika Anda tidak tahu apakah elemen yang cocok berada dalam array. Demikian pula, Array.tryFindIndex
seperti Array.findIndex
kecuali bahwa jenis opsi adalah nilai yang dikembalikan. Jika tidak ada elemen yang ditemukan, opsinya adalah None
.
Kode berikut menunjukkan penggunaan Array.tryFind
. Kode ini tergantung pada kode sebelumnya.
let delta = 1.0e-10
let isPerfectSquare (x:int) =
let y = sqrt (float x)
abs(y - round y) < delta
let isPerfectCube (x:int) =
let y = System.Math.Pow(float x, 1.0/3.0)
abs(y - round y) < delta
let lookForCubeAndSquare array1 =
let result = Array.tryFind (fun elem -> isPerfectSquare elem && isPerfectCube elem) array1
match result with
| Some x -> printfn "Found an element: %d" x
| None -> printfn "Failed to find a matching element."
lookForCubeAndSquare [| 1 .. 10 |]
lookForCubeAndSquare [| 100 .. 1000 |]
lookForCubeAndSquare [| 2 .. 50 |]
Outputnya sebagai berikut.
Found an element: 1
Found an element: 729
Failed to find a matching element.
Gunakan Array.tryPick
saat Anda perlu mengubah elemen selain menemukannya. Hasilnya adalah elemen pertama yang fungsinya mengembalikan elemen yang diubah sebagai nilai opsi, atau None
jika elemen tersebut tidak ditemukan.
Kode berikut menunjukkan penggunaan Array.tryPick
. Dalam hal ini, alih-alih ekspresi lambda, beberapa fungsi pembantu lokal didefinisikan untuk menyederhanakan kode.
let findPerfectSquareAndCube array1 =
let delta = 1.0e-10
let isPerfectSquare (x:int) =
let y = sqrt (float x)
abs(y - round y) < delta
let isPerfectCube (x:int) =
let y = System.Math.Pow(float x, 1.0/3.0)
abs(y - round y) < delta
// intFunction : (float -> float) -> int -> int
// Allows the use of a floating point function with integers.
let intFunction function1 number = int (round (function1 (float number)))
let cubeRoot x = System.Math.Pow(x, 1.0/3.0)
// testElement: int -> (int * int * int) option
// Test an element to see whether it is a perfect square and a perfect
// cube, and, if so, return the element, square root, and cube root
// as an option value. Otherwise, return None.
let testElement elem =
if isPerfectSquare elem && isPerfectCube elem then
Some(elem, intFunction sqrt elem, intFunction cubeRoot elem)
else None
match Array.tryPick testElement array1 with
| Some (n, sqrt, cuberoot) -> printfn "Found an element %d with square root %d and cube root %d." n sqrt cuberoot
| None -> printfn "Did not find an element that is both a perfect square and a perfect cube."
findPerfectSquareAndCube [| 1 .. 10 |]
findPerfectSquareAndCube [| 2 .. 100 |]
findPerfectSquareAndCube [| 100 .. 1000 |]
findPerfectSquareAndCube [| 1000 .. 10000 |]
findPerfectSquareAndCube [| 2 .. 50 |]
Outputnya sebagai berikut.
Found an element 1 with square root 1 and cube root 1.
Found an element 64 with square root 8 and cube root 4.
Found an element 729 with square root 27 and cube root 9.
Found an element 4096 with square root 64 and cube root 16.
Did not find an element that is both a perfect square and a perfect cube.
Melakukan komputasi pada array
Fungsi Array.average
mengembalikan rata-rata setiap elemen dalam array. Ini terbatas pada jenis elemen yang mendukung pembagian yang tepat dengan bilangan bulat, yang mencakup jenis titik mengambang tetapi bukan jenis integral. Fungsi Array.averageBy
mengembalikan rata-rata hasil panggilan fungsi pada setiap elemen. Untuk array jenis integral, Anda dapat menggunakan Array.averageBy
dan meminta fungsi mengonversi setiap elemen menjadi jenis titik mengambang untuk komputasi.
Gunakan Array.max
atau Array.min
untuk mendapatkan elemen maksimum atau minimum, jika jenis elemen mendukungnya. Demikian pula, Array.maxBy
dan Array.minBy
memungkinkan fungsi dijalankan terlebih dahulu, mungkin untuk mengubah ke jenis yang mendukung perbandingan.
Array.sum
menambahkan elemen array, dan Array.sumBy
memanggil fungsi pada setiap elemen dan menambahkan hasilnya bersama-sama.
Untuk menjalankan fungsi pada setiap elemen dalam array tanpa menyimpan nilai yang dikembalikan, gunakan Array.iter
. Untuk fungsi yang melibatkan dua array dengan panjang yang sama, gunakan Array.iter2
. Jika Anda juga perlu menyimpan array hasil fungsi, gunakan Array.map
atau Array.map2
, yang beroperasi pada dua array sekaligus.
Variasi Array.iteri
dan Array.iteri2
memungkinkan indeks elemen terlibat dalam komputasi; hal yang sama berlaku untuk Array.mapi
dan Array.mapi2
.
Fungsi Array.fold
, Array.foldBack
, Array.reduce
, Array.reduceBack
, Array.scan
, dan Array.scanBack
menjalankan algoritma yang melibatkan semua elemen array. Demikian pula, variasi Array.fold2
dan Array.foldBack2
melakukan komputasi pada dua array.
Fungsi-fungsi untuk melakukan perhitungan ini sesuai dengan fungsi dengan nama yang sama dalam Modul daftar. Untuk contoh penggunaan, lihat Daftar.
Mengubah array
Array.set
mengatur elemen ke nilai tertentu. Array.fill
mengatur rentang elemen dalam array ke nilai tertentu. Kode berikut memberikan contoh Array.fill
.
let arrayFill1 = [| 1 .. 25 |]
Array.fill arrayFill1 2 20 0
printfn "%A" arrayFill1
Outputnya sebagai berikut.
[|1; 2; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 23; 24; 25|]
Anda dapat menggunakan Array.blit
untuk menyalin sub bagian dari satu array ke array lain.
Mengonversi ke dan dari jenis lain
Array.ofList
membuat array dari daftar. Array.ofSeq
membuat array dari urutan. Array.toList
dan Array.toSeq
mengonversi ke jenis koleksi lain ini dari jenis array.
Mengurutkan array
Gunakan Array.sort
untuk mengurutkan array dengan menggunakan fungsi perbandingan umum. Gunakan Array.sortBy
untuk menentukan fungsi yang menghasilkan nilai, yang disebut sebagai kunci, untuk mengurutkan dengan menggunakan fungsi perbandingan umum pada kunci. Gunakan Array.sortWith
jika Anda ingin menyediakan fungsi perbandingan khusus. Array.sort
, Array.sortBy
, dan Array.sortWith
semua mengembalikan array yang diurutkan sebagai array baru. Variasi Array.sortInPlace
, Array.sortInPlaceBy
, dan Array.sortInPlaceWith
ubah array yang ada alih-alih mengembalikan array baru.
Array dan tuple
Fungsi Array.zip
dan Array.unzip
mengonversi array pada pasangan tuple menjadi tuple array dan sebaliknya. Array.zip3
dan Array.unzip3
serupa kecuali bahwa mereka bekerja dengan tuple tiga elemen atau tuple tiga array.
Komputasi paralel pada array
Modul Array.Parallel
berisi fungsi untuk melakukan komputasi paralel pada array. Modul ini tidak tersedia dalam aplikasi yang menargetkan versi .NET Framework sebelum versi 4.