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.

Lihat juga