Tömbök (F#)
A tömbök rögzített méretű, nulla alapú, azonos típusú, egymást követő adatelemekből álló mutable gyűjtemények.
Tömbök létrehozása
Tömböket többféleképpen is létrehozhat. Kis tömböt úgy hozhat létre, hogy pontosvesszővel tagolt és |]
egymástól [|
elválasztott egymást követő értékeket sorol fel, ahogyan az alábbi példákban is látható.
let array1 = [| 1; 2; 3 |]
Az egyes elemeket külön sorba is helyezheti, ebben az esetben a pontosvessző-elválasztó nem kötelező.
let array1 =
[|
1
2
3
|]
A tömbelemek típusa a használt literálokból származik, és konzisztensnek kell lennie.
// 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 |]
A következő kód hibát okoz, mert a 3.0 egy lebegőpontos, az 1 és a 2 pedig egész szám.
// Causes an error. The 3.0 (float) cannot be converted to integer implicitly.
// let array3 = [| 1; 2; 3.0 |]
Az alábbi kód hibát is okoz, mert 1,2
egy rekord, és 3
egész szám.
// Causes an error too. The 3 (integer) cannot be converted to tuple implicitly.
// let array4 = [| 1, 2; 3 |]
Tömbök létrehozásához szekvenciakifejezéseket is használhat. Az alábbi példa egy egész számból álló négyzettömböt hoz létre 1 és 10 között.
let array3 = [| for i in 1 .. 10 -> i * i |]
Ha olyan tömböt szeretne létrehozni, amelyben az összes elem nullára van inicializálva, használja a következőt Array.zeroCreate
: .
let arrayOfTenZeroes : int array = Array.zeroCreate 10
Hozzáférési elemek
A tömbelemeket szögletes zárójelek ([
és ]
) használatával érheti el. Az eredeti pontszintaxis (.[index]
) továbbra is támogatott, de már nem ajánlott az F# 6.0-s verziójától.
array1[0]
A tömbindexek 0-nál kezdődnek.
A tömbelemeket a szelet jelölésével is elérheti, amely lehetővé teszi a tömb altartományának megadását. Példák a szeletek jelölésére.
// 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..]
Ha szelet jelölést használ, létrejön a tömb új példánya.
Tömbtípusok és modulok
Az összes F#-tömb típusa a .NET-keretrendszer típusSystem.Array. Ezért az F#-tömbök támogatják a rendelkezésre álló System.Arrayösszes funkciót.
A Array
modul támogatja az egydimenziós tömbök műveleteit. A modulok Array2D
, Array3D
és Array4D
olyan függvényeket tartalmaznak, amelyek két, három, illetve négy dimenziós tömbök műveleteit támogatják. A négynél nagyobb rangot tartalmazó tömböket a használatával System.Arrayhozhatja létre.
Egyszerű függvények
Array.get
elemet kap. Array.length
a tömb hosszát adja meg. Array.set
egy elemet egy megadott értékre állít be. Az alábbi kód példája a függvények használatát mutatja be.
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)
A kimenet a következő.
0 1 2 3 4 5 6 7 8 9
Tömböket létrehozó függvények
Számos függvény tömböket hoz létre meglévő tömb nélkül. Array.empty
olyan új tömböt hoz létre, amely nem tartalmaz elemeket. Array.create
egy megadott méretű tömböt hoz létre, és az összes elemet megadott értékekre állítja. Array.init
egy tömböt hoz létre, amely egy dimenziót és egy függvényt ad az elemek létrehozásához. Array.zeroCreate
létrehoz egy tömböt, amelyben az összes elem inicializálva lesz a tömb típusának nulla értékére. Az alábbi kód ezeket a függvényeket mutatja be.
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
A kimenet a következő.
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
létrehoz egy új tömböt, amely egy meglévő tömbből másolt elemeket tartalmaz. Vegye figyelembe, hogy a másolat egy sekély másolat, ami azt jelenti, hogy ha az elemtípus hivatkozástípus, akkor csak a hivatkozás lesz másolva, nem az alapul szolgáló objektum. Az alábbi példakód ezt szemlélteti.
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
Az előző kód kimenete a következő:
[|Test1; Test2; |]
[|; Test2; |]
A sztring Test1
csak az első tömbben jelenik meg, mert egy új elem létrehozásának művelete felülírja a hivatkozást firstArray
, de nem befolyásolja az eredeti hivatkozást egy üres sztringre, amely továbbra is jelen van a fájlban secondArray
. A sztring Test2
mindkét tömbben megjelenik, mert a System.Text.StringBuilderInsert
típuson végzett művelet hatással van a mögöttes System.Text.StringBuilder objektumra, amelyre mindkét tömb hivatkozik.
Array.sub
Új tömböt hoz létre egy tömb altartományából. Az alrangot a kezdő index és a hossz megadásával adhatja meg. Az alábbi kód bemutatja a .Array.sub
let a1 = [| 0 .. 99 |]
let a2 = Array.sub a1 5 10
printfn "%A" a2
A kimenet azt mutatja, hogy az alarraság az 5. elemnél kezdődik, és 10 elemet tartalmaz.
[|5; 6; 7; 8; 9; 10; 11; 12; 13; 14|]
Array.append
létrehoz egy új tömböt két meglévő tömb kombinálásával.
Az alábbi kód a Array.append parancsot mutatja be.
printfn "%A" (Array.append [| 1; 2; 3|] [| 4; 5; 6|])
Az előző kód kimenete a következő.
[|1; 2; 3; 4; 5; 6|]
Array.choose
egy tömb elemeit választja ki, hogy belefoglaljanak egy új tömbbe. Az alábbi kód bemutatja.Array.choose
Vegye figyelembe, hogy a tömb elemtípusának nem kell megegyeznie a beállítástípusban visszaadott érték típusával. Ebben a példában az elem típusa, int
a beállítás pedig egy polinomfüggvény eredménye, elem*elem - 1
lebegőpontos számként.
printfn "%A" (Array.choose (fun elem -> if elem % 2 = 0 then
Some(float (elem*elem - 1))
else
None) [| 1 .. 10 |])
Az előző kód kimenete a következő.
[|3.0; 15.0; 35.0; 63.0; 99.0|]
Array.collect
Egy meglévő tömb minden tömbelemén futtat egy adott függvényt, majd összegyűjti a függvény által létrehozott elemeket, és egyesíti őket egy új tömbbe. Az alábbi kód bemutatja.Array.collect
printfn "%A" (Array.collect (fun elem -> [| 0 .. elem |]) [| 1; 5; 10|])
Az előző kód kimenete a következő.
[|0; 1; 0; 1; 2; 3; 4; 5; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10|]
Array.concat
tömbsorozatot vesz fel, és egyetlen tömbbe egyesíti őket. Az alábbi kód bemutatja.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
logikai feltételfüggvényt vesz fel, és létrehoz egy új tömböt, amely csak azokat az elemeket tartalmazza a bemeneti tömbből, amelyeknél a feltétel igaz. Az alábbi kód bemutatja.Array.filter
printfn "%A" (Array.filter (fun elem -> elem % 2 = 0) [| 1 .. 10|])
Az előző kód kimenete a következő.
[|2; 4; 6; 8; 10|]
Array.rev
új tömböt hoz létre egy meglévő tömb sorrendjének megfordításával. Az alábbi kód bemutatja.Array.rev
let stringReverse (s: string) =
System.String(Array.rev (s.ToCharArray()))
printfn "%A" (stringReverse("!dlrow olleH"))
Az előző kód kimenete a következő.
"Hello world!"
A tömbmodulban egyszerűen kombinálhatja a tömböket átalakító függvényeket a folyamatkezelő (|>
) használatával, ahogyan az az alábbi példában is látható.
[| 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"
A kimenet a következő:
[|100; 36; 16; 4|]
Többdimenziós tömbök
Többdimenziós tömb is létrehozható, de a többdimenziós tömbkonstans írásához nincs szintaxis. Az operátor array2D
használatával tömböt hozhat létre tömbelemek sorozatából. A szekvenciák lehetnek tömbök vagy listakonstansok. A következő kód például létrehoz egy kétdimenziós tömböt.
let my2DArray = array2D [ [ 1; 0]; [0; 1] ]
A függvény Array2D.init
két dimenzióból álló tömbök inicializálására is használható, és hasonló függvények érhetők el három és négy dimenziós tömbökhöz. Ezek a függvények az elemek létrehozásához használt függvényt használják. Ha egy függvény megadása helyett egy kezdeti értékre beállított elemeket tartalmazó kétdimenziós tömböt szeretne létrehozni, használja a Array2D.create
függvényt, amely akár négy dimenziós tömbökhöz is elérhető. Az alábbi példakód először bemutatja, hogyan hozhat létre tömböket a kívánt elemeket tartalmazó tömbökből, majd hogyan Array2D.init
hozhatja létre a kívánt kétdimenziós tömböt.
let arrayOfArrays = [| [| 1.0; 0.0 |]; [|0.0; 1.0 |] |]
let twoDimensionalArray = Array2D.init 2 2 (fun i j -> arrayOfArrays[i][j])
A tömbindexelés és szeletelés szintaxisa a 4. rangig tartó tömbök esetében támogatott. Ha több dimenzióban ad meg indexet, vesszővel választja el az indexeket, ahogy az az alábbi kód példájában is látható.
twoDimensionalArray[0, 1] <- 1.0
A kétdimenziós tömb típusa ki van írva <type>[,]
(például int[,]
), double[,]
és a háromdimenziós tömb típusa a következőképpen van megírva <type>[,,]
, és így tovább a magasabb dimenziójú tömbök esetében.
A többdimenziós tömbökhöz csak az egydimenziós tömbökhöz elérhető függvények egy részhalmaza érhető el.
Tömb szeletelése és többdimenziós tömbök
A kétdimenziós tömbökben (mátrixokban) kinyerhet egy almátrixot tartományok megadásával, valamint helyettesítő karakterrel*
egész sorokat vagy oszlopokat adhat meg.
// 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]
A többdimenziós tömböket azonos vagy alacsonyabb dimenziós alarrá alakíthatja. Egy vektort például egyetlen sor vagy oszlop megadásával szerezhet be egy mátrixból.
// Get row 3 from a matrix as a vector:
matrix[3, *]
// Get column 3 from a matrix as a vector:
matrix[*, 3]
Ezt a szeletelő szintaxist az elemhozzáférési operátorokat és a túlterhelt GetSlice
metódusokat implementáló típusok esetében használhatja. A következő kód például létrehoz egy mátrixtípust, amely az F# 2D tömböt burkolja, egy Item tulajdonságot implementál a tömbindexelés támogatásához, és a tömb három verzióját GetSlice
implementálja. Ha ezt a kódot sablonként használhatja a mátrixtípusokhoz, az ebben a szakaszban leírt összes szeletelési műveletet használhatja.
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}"
Logikai függvények tömbökön
Egy vagy két tömb függvényei Array.exists
és Array.exists2
tesztelemei. Ezek a függvények egy tesztfüggvényt vesznek igénybe, és visszaadják true
, ha van olyan elem (vagy elempár), amely megfelel a feltételnek Array.exists2
.
Az alábbi kód bemutatja az és Array.exists2
a Array.exists
. Ezekben a példákban az új függvények úgy jönnek létre, hogy csak az egyik argumentumot alkalmazzák, ezekben az esetekben a függvényargumentumot.
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|])
Az előző kód kimenete a következő.
true
false
false
true
A függvény Array.forall
hasonlóképpen tesztel egy tömböt annak megállapításához, hogy minden elem megfelel-e logikai feltételnek. A variáció Array.forall2
ugyanezt teszi egy logikai függvény használatával, amely két egyenlő hosszúságú tömb elemeit foglalja magában. Az alábbi kód ezeknek a függvényeknek a használatát mutatja be.
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 |])
A példák kimenete a következő.
false
true
true
false
Tömbök keresése
Array.find
logikai függvényt vesz fel, és visszaadja az első elemet, amelyhez a függvény visszatér true
, vagy ha System.Collections.Generic.KeyNotFoundException nem található olyan elem, amely megfelel a feltételnek. Array.findIndex
hasonló Array.find
, azzal a kivételrel, hogy az elem indexét adja vissza, nem magát az elemet.
Az alábbi kód egy olyan számot használ Array.find
és Array.findIndex
keres, amely tökéletes négyzet és tökéletes kocka.
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
A kimenet a következő.
The first element that is both a square and a cube is 64 and its index is 62.
Array.tryFind
olyan, mint Array.find
, azzal a kivétellel, hogy az eredménye egy beállítástípus, és akkor ad vissza None
, ha nem található elem. Array.tryFind
helyett akkor érdemes használni Array.find
, ha nem tudja, hogy egyező elem szerepel-e a tömbben. Hasonlóképpen, ez is olyan, Array.tryFindIndex
mint Array.findIndex
azzal a kivételel, hogy a beállítás típusa a visszatérési érték. Ha nem található elem, a beállítás a következő None
: .
Az alábbi kód bemutatja a .Array.tryFind
Ez a kód az előző kódtól függ.
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 |]
A kimenet a következő.
Found an element: 1
Found an element: 729
Failed to find a matching element.
Akkor használható Array.tryPick
, ha egy elemet a megtalálás mellett át kell alakítania. Az eredmény az első elem, amelynél a függvény az átalakított elemet adja vissza beállításértékként, vagy None
ha nem található ilyen elem.
Az alábbi kód a következő kód használatát Array.tryPick
mutatja be. Ebben az esetben a lambda kifejezés helyett több helyi segédfüggvény is definiálva van a kód egyszerűsítése érdekében.
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 |]
A kimenet a következő.
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.
Számítások végrehajtása tömbökön
A Array.average
függvény egy tömb egyes elemeinek átlagát adja vissza. Csak olyan elemtípusokra korlátozódik, amelyek támogatják a pontos osztást egész számokkal, beleértve a lebegőpontos típusokat, de az integrál típusokat nem. A Array.averageBy
függvény az egyes elemeken egy függvény meghívásának eredményeinek átlagát adja vissza. Az integrál típusú tömbökhöz használhatja Array.averageBy
és használhatja, hogy a függvény minden elemet lebegőpontos típussá alakítsa a számításhoz.
Használja Array.max
vagy Array.min
kérje le a maximális vagy minimális elemet, ha az elem típusa támogatja. Hasonlóképpen, Array.maxBy
és Array.minBy
lehetővé teszi egy függvény végrehajtásának első végrehajtását, talán az összehasonlítást támogató típussá alakítható át.
Array.sum
Hozzáadja egy tömb elemeit, és Array.sumBy
meghív egy függvényt az egyes elemeken, és összeadja az eredményeket.
Ha függvényt szeretne végrehajtani egy tömb minden elemén a visszatérési értékek tárolása nélkül, használja a következőt Array.iter
: . Két egyenlő hosszúságú tömböt tartalmazó függvényhez használja a következőt Array.iter2
: . Ha a függvény eredményeinek tömböt is meg kell őriznie, használja Array.map
vagy Array.map2
, amely egyszerre két tömbön működik.
A variációk Array.iteri
, és Array.iteri2
lehetővé teszik az elem indexének bevonását a számításba; ugyanez igaz Array.mapi
az és Array.mapi2
a .
A függvények Array.fold
, Array.foldBack
, Array.reduce
, Array.reduceBack
, Array.scan
, , és Array.scanBack
végrehajtják az algoritmusokat, amelyek egy tömb összes elemét magukban foglalják. Hasonlóképpen, a variációk Array.fold2
és Array.foldBack2
számítások végrehajtása két tömbön.
Ezek a számításokhoz használt függvények a Lista modul azonos nevű függvényeinek felelnek meg. Használati példákért lásd a Listák című témakört.
Tömbök módosítása
Array.set
egy elemet egy megadott értékre állít be. Array.fill
egy tömb elemeinek tartományát egy megadott értékre állítja. Az alábbi kód egy példát mutat be a következőkre Array.fill
:
let arrayFill1 = [| 1 .. 25 |]
Array.fill arrayFill1 2 20 0
printfn "%A" arrayFill1
A kimenet a következő.
[|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|]
Az egyik tömb alszakaszát átmásolhatja Array.blit
egy másik tömbbe.
Konvertálás más típusokra és más típusból
Array.ofList
egy tömböt hoz létre egy listából. Array.ofSeq
tömböt hoz létre egy sorozatból. Array.toList
és Array.toSeq
a tömbtípusból konvertálja ezeket a gyűjteménytípusokat ezekre a gyűjteménytípusokra.
Tömbök rendezése
Tömb Array.sort
rendezése az általános összehasonlító függvény használatával. Egy olyan függvény megadására szolgálArray.sortBy
, amely egy kulcsot generáló értéket hoz létre a kulcs általános összehasonlító függvényének használatával történő rendezéshez. Ha egyéni összehasonlító függvényt szeretne megadni, használja Array.sortWith
. Array.sort
, Array.sortBy
és Array.sortWith
mindegyik új tömbként adja vissza a rendezett tömböt. A változatok Array.sortInPlace
, Array.sortInPlaceBy
és Array.sortInPlaceWith
módosítsa a meglévő tömb helyett egy újat.
Tömbök és csuplok
A függvények Array.zip
és Array.unzip
a tömbök tömbjei tömbökké alakítása tömbökké és fordítva. Array.zip3
és Array.unzip3
hasonlóak, azzal a kivétellel, hogy három elemből vagy három tömbből álló kukkával működnek.
Párhuzamos számítások tömbökön
A modul Array.Parallel
függvényeket tartalmaz a párhuzamos számítások tömbökön való végrehajtásához. Ez a modul nem érhető el azokban az alkalmazásokban, amelyek a .NET-keretrendszer 4. verzió előtti verzióit célják.