ScriptForge.Array service (SF_Array)

Indhold
Indholdsfortegnelse 🔎︎

# ScriptForge.Array-tjeneste

Giver en samling metoder til at manipulere og transformere en-dimensions matrixer (vektorer) og to-dimensions matrixer (matrixer). Dette omfatter sæt-operationer, sortering, import fra og eksport til tekstfiler.

Matrixer med mere end to dimensioner kan ikke bruges med metoderne i denne tjeneste; den eneste udtagelse er metoden CountDims, der accepterer matrixer med et vilkårligt antal dimensioner.

Matrix-elementer kan indeholde enhver type værdi, herunder (under)matrixer.

## Kald af tjeneste

Før brug af tjenesten Array er det nødvendigt at hente biblioteket ScriptForge ved hjælp af:

        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

Indlæsning af biblioteket vil oprette objektet SF_Array, der kan bruges til at kalde metoderne i tjenesten Array-

De følgende kodestumper viser de forskellige måder at kalde metoder i tjenesten Array på (metoden Append bruges som eksempel):

        Dim arr : arr = Array(1, 2, 3)
        arr = SF_Array.Append(arr, 4)

        Dim arr : arr = Array(1, 2, 3)
        Dim svc : svc = SF_Array
        arr = svc.Append(arr, 4)

        Dim arr : arr = Array(1, 2, 3)
        Dim svc : svc = CreateScriptService("Array")
        arr = svc.Append(arr, 4)

Fordi Python har en indbygget liste og understøttelse af tupler, findes de fleste af metoderne i tjenesten Array (Matrix) kun til Basic-scripts. Den eneste undtagelse er ImportFromCSVFile, som understøttes i både Basic og Python.

Liste over metoder i tjenesten Array (Matrix)
Append AppendColumn AppendRow Contains ConvertToDictionary Copy CountDims Difference ExportToTextFile ExtractColumn ExtractRow | Flatten ImportFromCSVFile IndexOf Insert InsertSorted Intersection Join2D Prepend PrependColumn PrependRow RangeInit | Reverse Shuffle Slice Sort SortColumns SortRows Transpose TrimArray Union Unique

Det første argument i de fleste motoder er det matrix-objekt, der skal behandles. Det overleveres altid ved reference og lades uændret. Metoder som for eksempel Append, Prepend osv. returnerer et nyt matrix efter deres udførelse.

## Append

Tilføjer de oplistede elementer som argumenter i slutningen af input-matrixen.

### Syntaks:

svc.Append(array_1d: any[0..*], arg0: any, [arg1: any] ...): any[0..*]

### Parametre:

array_1d (matrix): Den allerede eksisterende matrix, kan være tom.

arg0, arg1, ...: Elementer, der bliver tilføjet til array_1d.

### Eksempel:

        Dim a As Variant
        a = SF_Array.Append(Array(1, 2, 3), 4, 5)
            ' (1, 2, 3, 4, 5)

## AppendColumn

Tilføjer en ny kolonne på højre side i et to-dimensionelt matrix. De resulterende matrix har de samme nedre grænser som det oprindelige to-dimensionelle matrix.

### Syntaks:

svc.AppendColumn(array_2d: any[0..*, 0..*], column: any[0..*]): any[0..*, 0..*]

### Parametre:

array_2d (matrix_2d): Den allerede eksisterende matrix, kan være tom. Hvis matrixen kun har en dimension, anses den som den første kolonne i den resulterende todimensionelle matrix.

kolonne: En endimensionel matrix med så mange elementer, som der er rækker i array_2d (den todimensionelle matrix).

### Eksempel:

        Dim a As Variant, b As variant
        a = SF_Array.AppendColumn(Array(1, 2, 3), Array(4, 5, 6))
            ' ((1, 4), (2, 5), (3, 6))
        b = SF_Array.AppendColumn(a, Array(7, 8, 9))
            ' ((1, 4, 7), (2, 5, 8), (3, 6, 9))
        c = SF_Array.AppendColumn(Array(), Array(1, 2, 3))
            ' ∀ i ∈ {0 ≤ i ≤ 2} : b(0, i) ≡ i

## AppendRow

Tilføj en ny række nederst nederst i en to-dimensionel matrix. Den resulterende matrix har de samme nedre grænser som den oprindelige to-dimensionelle matrix.

### Syntaks:

svc.AppendRow(array_2d: any[0..*, 0..*], row: any[0..*]): any[0..*, 0..*])

### Parametre:

matrix_2d: Den allerede eksisterende matrix, kan være tom. Hvis denne matrix har en dimension, anses den for at være den første række i den resulterende todimensionelle matrix.

række: En endimensionel matrix med så mange elementer, som der er kolonner i array_2d (den todimensionelle matrix).

### Eksempel:

        Dim a As Variant, b As variant
        a = SF_Array.AppendRow(Array(1, 2, 3), Array(4, 5, 6))
            '  ((1, 2, 3), (4, 5, 6))
        b = SF_Array..AppendRow(Array(), Array(1, 2, 3))
            ' ∀ i ∈ {0 ≤ i ≤ 2} : b(i, 0) ≡ i

## Contains

Tjek, om en endimensionel matrix indeholder et bestemt tal, tekst eller dato. Tekstsammenligningen kan skelne mellem Store og små bogstaver eller ikke.
Sorteret input-matrixer skal udfyldes homogent; det vil sige, at alle elementer skal være skalarer af den samme type (Tomme og Null-elementer er forbudt).
Metodens resultat er uforudsigelig, når matrixen annonceres som sorteret og faktisk ikke er det.
Der udføres en søgning, når matrixen er sorteret, ellers bliver den simpelthen skannet fra top til bund og elementerne Tom og Null ignoreres.

### Syntaks:

svc.Contains(array_1d: any[0..*], tofind: any, casesensitive: bool = False, sortorder: str = ""): bool

### Parametre:

Matrix_1d: Den matrix, som skal scannes.

skal_findes: Et tal, en dato eller en streng, der skal findes.

Stort-og-småt: Kun ved strengsammenligninger (standard = False (falsk)).

sorteringsrækkefølge: Den kan være enten "ASC" (stigende), "DESC" (faldende) eller "" (ikke sorteret). Standardværdiern er "".

### Eksempel:

        Dim a As Variant
        a = SF_Array.Contains(Array("A","B","c","D"), "C", SortOrder := "ASC") ' True
        SF_Array.Contains(Array("A","B","c","D"), "C", CaseSensitive := True) ' False

## ConvertToDictionary

Gem indholdet af en to-kolonners matrix i et ScriptForge.Dictionary-objekt.
Nøglen bliver trukket ud af den første kolonne, elementet fra den anden.

### Syntaks:

svc.ConvertToDictionary(array_2d: any[0..*, 0..1]): obj

### Parametre:

Matrix_2d: Data, der skal konverteres til et ScriptForge.Dictionary-objekt.

- Den første kolonne må udelukkende indeholde strenge med en større længde end nul i vilkårlig orden. Disse værdier bliver brugt som etiketter i ordbogen.

- Den anden kolonne indeholder de data, der bliver knyttet til den tilsvarende etiket i ordbogen.

### Eksempel:

        Dim a As Variant, b As Variant
        a = SF_Array.AppendColumn(Array("a", "b", "c"), Array(1, 2, 3))
        b = SF_Array.ConvertToDictionary(a)
        MsgBox b.Item("c") ' 3

## Copy

Opretter en kopi af en en- eller todimensionel matrix.

### Syntaks:

svc.Copy(array_nd: any[0..*]): any[0..*]

svc.Copy(array_nd: any[0..*, 0..*]): any[0..*, 0..*]

### Parametre:

matrix_nd: Den en- eller to-dimensionelle matrix, der skal kopieres.

### Eksempel:

En enkel tildeling af et Array (matrix)-objekt kopierer dens reference i stedet for at oprette en kopi af objektets indhold. Se eksemplet herunder:

        Dim a as Variant, b as Variant
        a = Array(1, 2, 3)
        ' Tildelingen herunder er oprettet med reference
        b = a
        ' Derfor vil ændring af "b" også ændre "a"
        b(0) = 10
        MsgBox a(0) ' 10

Ved brug af Copy (kopi)-metoden oprettes en kopi af hele Array (matrix)-objektet. I eksemplet herunder er a og b forskellige objekter og ændringer af værdierne i b påvirker ikke værdierne i a.

        Dim a as Variant, b as Variant
        a = Array(1, 2, 3)
        ' Oprette en kopi af "a" med "Kopi"-metoden
        b = SF_Array.Copy(a)
        b(0) = 10
        MsgBox a(0) ' 1

## CountDims

Tæl antallet af en matrix' dimensioner. Resultatet kan være større end to.
Hvis argumentet ikke er en matrix, returneres -1
Hvis matrixen ikke er initialiseret, returneres 0.

### Syntaks:

svc.CountDims(array_nd: any): int

### Parametre:

matrix_nd: Den matrix, der skal undersøges.

### Eksempel:

        Dim a(1 To 10, -3 To 12, 5)
        MsgBox SF_Array.CountDims(a) ' 3

## Difference

Byg et sæt, som en nul-baseret matrix ved at anvende differens-operatoren på de to input-matrixer. Resulterende elementer stammer fra den første matrix og ikke fra den anden.
Den resultende matrix er sortetet i stigende rækkefølge.
Begge input-matrixer skal være fyldt homogent, deres elementer skal være skalarer af den samme type. Tomme og Null-elemnter er forbudt.
Tekstsammenligning kan skelne mellem Store og små bogstaver eller ikke.

### Syntaks:

svc.Difference(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]

### Parametre:

matrix1_1d: En en-dimensionel reference-matrix, hvis elementer undersøges til fjernelse.

matrix2_1d: En en-dimensionel matrix, hvis elementer trækkes fra den første input-matrix.

Stort-og-småt: Dette argument er kun anvendeligt, hvis matrixerne er udfyldt med strenge (Standard = False (falsk)).

### Eksempel:

        Dim a As Variant
        a = SF_Array.Difference(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
            ' ("A", "B")

## ExportToTextFile

Skriv alle matrixens elementer i nummerrækkefølge til en tekstfil. Hvis filen allerede eksisterer, bliver den overskrevet uden varsel.

### Syntaks:

svc.ExportToTextFile(array_1d: any[0..*], filename: str, [encoding: str]): bool

### Parametre:

matrix_1d: Matrixen, skal eksporteres. Må kun indeholde strenge.

filnavn: Navnet på den tekstfil, som data skal skrives til. Navnet skal udtrykkes i henhold til egenskaben FileNaming (filnavngivelse) i tjenesten SF_FileSystem.

indkodning: Det tegnsæt, der skal bruges. Brug et af de navne, der er oplistet i IANA tegnsæt. Bemærk, at LibreOffice måske ikke implementerer alle eksisterende tegnsæt (Standard er "UTF-8").

### Eksempel:

        SF_Array.ExportToTextFile(Array("A","B","C","D"), "C:\Temp\A short file.txt")

## ExtractColumn

Udtræk en bestemt kolonne som en ny matrix fra en todimensionel matrix.
Dens nedre LBound og øvre UBound grænser er identiske med dem fra input-matrixens første dimension.

### Syntaks:

svc.ExtractColumn(array_2d: any[0..*, 0..*], columnindex: int): any[0..*, 0..*]

### Parametre:

matrix_2d: Den matrix, der skal udtrækkes fra.

kolonneindex: Den kolonne, der skal trækkes ud - skal ligge i intervallet [LBound, UBound] (nedre_grænse, øvre_grænse).

### Eksempel:

        'Opretter en 3x3 matrix: |1, 2, 3|
        '                      |4, 5, 6|
        '                      |7, 8, 9|
        Dim mat as Variant, col as Variant
        mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
        mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
        mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
        'Udtrækker den tredje kolonne: |3, 6, 9|
        col = SF_Array.ExtractColumn(mat, 2)

## ExtractRow

Udtræk en bestemt række som en ny mqtrix fra en to-dimensionel matrix.
Dens nedre LBound og øvre UBound grænser er identiske med dem i den anden dimension i input-matrixen.

### Syntaks:

svc.ExtractRow(array_2d: any[0..*, 0..*], rowindex: int): any[0..*, 0..*]

### Parametre:

matrix_2d: Den matrix, der skal udtrækkes fra.

rækkeindex: det rækkenummer, der skal udtrækkes - skal ligge i intervallet [LBound, UBound] (nedre_grænse, øvre_grænse).

### Eksempel:

        'Opretter en 3x3 matrix: |1, 2, 3|
        '                      |4, 5, 6|
        '                      |7, 8, 9|
        Dim mat as Variant, row as Variant
        mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
        mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
        mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
        'Udtrækker den første række: |1, 2, 3|
        row = SF_Array.ExtractRow(mat, 0)

## Flatten

Stak alle enkelte elementer i et matrix og alle elemter i det undermatrixer ind i et nyt matrix uden undermatrixer. Tomme undermatrixer ignoreres og undermatrixer med et større antal dimensioner end en udflades ikke.

### Syntaks:

svc.Flatten(array_1d: any[0..*]): any[0..*]

### Parametre:

matrix_1d: Den allerede eksisterende matrix, kan være tom.

### Eksempel:

        Dim a As Variant
        a = SF_Array.Flatten(Array(Array(1, 2, 3), 4, 5))
            ' (1, 2, 3, 4, 5)

Du kan bruge metoden Flatten sammen med andre metoder som for eksempel Append eller Prepend til at sammenkæde et sæt af 1D-matrixer til et enkelt 1D-matrixer.

### Eksempel:

Herefter er der et eksempel på, hvordan metoderne Flatten og Append kan kombineres til at sammenkæde tre matrixer.

        'Opretter tre matrixer til dette eksempel
        Dim a as Variant, b as Variant, c as Variant
        a = Array(1, 2, 3)
        b = Array(4, 5)
        c = Array(6, 7, 8, 9)
        'Sammenkæder de tre matrixer til en enkelt 1D-matrix
        Dim arr as Variant
        arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
        '(1, 2, 3, 4, 5, 6, 7, 8, 9)

## ImportFromCSVFile

Importer de data, der er indeholdt i en komma-separeret værdi-fil (CSV). Kommaet kan være erstattet af et vilkårligt tegn.

Det anvendelige CSV-format er beskrevet i IETF Common Format and MIME Type for CSV Files.

Hver linje i filen indeholder en komplet post (linjeopdeling er ikke tilladt).
Sekvenser som \n, \t ... efterrlades imidlertid uændrede. Brug metoden SF_String.Unescape() til at håndtere dem.

Metoden returnerer en to-dimensionel matrix, hvis rækker svarer til en enkelt post læst i filen og hvis kolonner svaret til et felt i posten. Der udføres ingen tjek af felttypernes sammenhæng på tværs af kolonner. Der gøres et bedste gæt på at identificere numeriske og dato-typer.

Hvis en linje indeholder færre eller flere felter en den første linje i filen, sættes et undtagelsesflag og matrixen afkortes. Hvis filstørrelsen overstiger grænsen for antallet af elementer (se inde i koden), skrives en advarsel og matrixen afkortes.

### Syntaks:

svc.ImportFromCSVFile(filename: str, delimiter: str = ',', dateformat: str = ''): any[0..*]

### Parametre:

filnavn: Navn på den fil, der indeholder dataene. Navnet skal udtrykkes i henhold til den aktuelle egenskab FileNaming (filnavngivelse) i tjenesten SF_FileSystem.

skilletegn: Et enkelt tegn, sædvanligvis et komma, et semikolon eller et TAB-tegn (Standard = ",").

datoformat: En særlig mekanisme håndterer data, når dateformat er enten "ÅÅÅÅ-MM-DD", "DD-MM-ÅÅÅÅ" eller "MM-DD-ÅÅÅÅ". Tankestregen (-) kan erstattes med en prik (.), en skråstreg (/) eller et mellemrum. Andre datoformater bliver ignoreret. Datoer, der falder tilbage til en tom streng "" anses som almindelig tekst.

### Eksempel:

Overvej CSV-filen "min_fil.csv" med følgende indhold:

Navn,Fødselsdato,Adresse,By

Anna,2002/03/31,"Kirkegade 21",Tølløse

Frede,1998/05/04,"Albert Einsteins vej 113A",Carcassonne

Eksemplerne herunder i Basic og Python indlæser CSV-filens indhold i et Array (matrix)-objekt.

##### I Basic

        Dim arr As Variant
        arr = SF_Array.ImportFromCSVFile("C:\Temp\myFile.csv", DateFormat := "ÅÅÅÅ/MM/DD")
        MsgBox arr(0, 3) ' By
        MsgBox arr(1, 2) ' Kirkegade 21
        MsgBox arr(1, 3) ' Tølløse

##### I Python

        from scriptforge import CreateScriptService
        svc = CreateScriptService("Array")
        bas = CreateScriptService("Basic")
        arr = svc.ImportFromCSVFile(r"C:\Temp\myFile.csv", datoformat = "ÅÅÅÅ/MM/DD")
        bas.MsgBox(arr[0][3]) # By
        bas.MsgBox(arr[1][2]) # Kirkegade 21
        bas.MsgBox(arr[1][3]) # Tølløse

## IndexOf

Se i en endimensionel matrix efter et tal, en streng eller en dato. Tekstsammenligning kan skelne mellem Store og små bogstaver eller ej.
Hvis matrixen er sorteret, skal den være homogent fyldt, hvilket betyder, at alle elementer skal være skalarer af den samme type (elementerne Empty og Null er ikke tilladt).
Resultatet af metoden er uforudsigeligt, når matrixen annonceres som sorteret og faktisk ikke er det.
En binær søgning foretages på sorterede matrixer. Ellers scannes matrixer fra top til bund og elementerne Empty og Null ignorereres.
Metoden returnerer LBound(input array) -1, hvis søgningen ikke lykkedes.

### Syntaks:

svc.IndexOf(array_1d: any[0..*], tofind: any, casesensitive: bool = False, sortorder: str = ''): int

### Parametre:

matrix_1d: Den matrix, der skal skannes.

skal_findes: Et tal, en dato eller en streng, der skal findes.

Stort-og-småt: Kun ved strengsammenligninger (standard = False (falsk)).

sorteringsrækkefølge: Kan være enten "ASC" (stigende), "DESC" (faldende) eller "" (usorteret). Standardværdien er "".

### Eksempel:

        MsgBox SF_Array.IndexOf(Array("A","B","c","D"), "C", SortOrder := "ASC") ' 2
        MsgBox SF_Array.IndexOf(Array("A","B","c","D"), "C", CaseSensitive := True) ' -1

## Insert

Indsæt de elementer, der er oplistet som argumenter, foran et givet indeks i input-matrixen.
Argumenter indsættes blindt. Hver af dem kan være enten en skalar af vilkårlig type eller en undermatrix.

### Syntaks:

svc.Insert(array_1d: any[0..*], before: int, arg0: any, [arg1: any] ...): any[0..*]

### Parametre:

matrix_1d: Den allerede eksisterende matrix, kan være tom.

foran: Indekset, som der skal indsættes foran; skal ligge i intervallet [LBound, UBound + 1] (nedre_grænse, øvre_grænse + 1).

arg0, arg1, ...: Elementer, der skal indsættes i matrix_1d.

### Eksempel:

        Dim a As Variant
        a = SF_Array.Insert(Array(1, 2, 3), 2, "a", "b")
            ' (1, 2, "a", "b", 3)

## InsertSorted

Indsætter et nyt element på dets plads i en sorteret matrix.
Matrixwn skal være homogent udfyldt, hvilket vil sige, at alle elementer skal være skalarer af den samme type.
Elementerne Empty (tom) og Null (nul) er forbudte.

### Syntaks:

svc.InsertSorted(array_1d: any[0..*], item: any, sortorder: str = 'ASC', casesensitive: bool = False): any[0..*]

### Parametre:

matrix_1d: Den matrix, som værdien skal indsættes i.

element: den skalar-værdi, der skal indsættes, af den samme type som de eksisterende matrix-elementer.

sorteringsrækkefølge: Kan være enten "ASC" (stigende) (standard) eller "DESC" (faldende).

Stort-og-småt: Kun ved strengsammenligninger (standard = False (falsk)).

### Eksempel:

        Dim a As Variant
        a = SF_Array.InsertSorted(Array("A", "C", "a", "b"), "B", CaseSensitive := True)
            ' ("A", "B", "C", "a", "b")

## Intersection

Byg et sæt som en nul-baseret matrix ved at anvende operatoren fællesmængde på de to inputmatrixer. Resulterende elementer er indeholdt i begge matrixer.
Den resulterende matrix sorteres i stigende rækkefølge.
Begge input-matrixer skal være homogent fyldt, med andre ord skal alle elementer være skalarer af den samme type. Elementerne Empty og Null er ikke tilladt.
Tekstsammenligning kan skelne med Store og små bogstaver eller ej.

### Syntaks:

svc.Intersection(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]

### Parametre:

matrix1_1d: Den første indtastningsmatrix.

matrix2_1d: Den anden input-matrix.

Stort-og-småt: Anvendes på matrixer, der er befolket med tekstelementer (Standard = False (falsk)).

### Eksempel:

        Dim a As Variant
        a = SF_Array.Intersection(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
            ' ("C", "b")

## Join2D

Sammenføj en todimensionel matrix med to skilletegn, en for kolonnerne. en for rækkerne.

### Syntaks:

svc.Join2D(array_2d: any [0..*, 0..*], [columndelimiter: str], [rowdelimiter: str], [quote: str]): str

### Parametre:

matrix_2d: Hvert element skal være enten tekst, et tal, en dato eller en boolsk værdi.
Datoer ændres til formatet ÅÅÅÅ-MM-DD hh:mm:ss.
Ugyldige elementer erstattes af en nul-længde streng.

kolonne-skilletegn: Skiller hver kolonne (standard = Tab/Chr(9)).

række-skilletegn: Skiller hver række (standard = Linjeskift/Chr(10))

citat: Hvis True (sand), beskyttes strenge med dobbelte anførselstegn. Standard er False (falsk).

### Eksempel:

        ' arr = | 1, 2, "A", [2020-02-29], 51, 2, "A", [2020-02-29], 5           |
        '       | 6, 7, "this is a string", 9, 106, 7, "this is a string", 9, 10 |
        Dim arr as Variant : arr = Array()
        arr = SF_Array.AppendRow(arr, Array(1, 2, "A", [2020-02-29], 51, 2, "A", [2020-02-29], 5))
        arr = SF_Array.AppendRow(arr, Array(6, 7, "this is a string", 9, 106, 7, "this is a string", 9, 10))
        Dim arrText as String
        arrText = SF_Array.Join2D(arr, ",", "/", False)
        ' 1,2,A,,51,2,A,,5/6,7,this is a string,9,106,7,this is a string,9,10

## Prepend

Tilføj de oplistede elementer som argumenter i begyndelsen af input-matrixen

### Syntaks:

svc.Prepend(array_1d: any[0..*], arg0: any, [arg1: any] ...): any[0..*]

### Parametre:

matrix_1d: Den allerede eksisterende matrix, kan være tom.

arg0, arg1, ...: En liste over elementer, der skal sættes forrest i matrix_1d.

### Eksempel:

        Dim a As Variant
        a = SF_Array.Prepend(Array(1, 2, 3), 4, 5)
            ' (4, 5, 1, 2, 3)

## PrependColumn

Indføj en ny kolonne forrest i den venstre side af en to-dimensionel matrix. Den resulterende matrix har de samme nedre grænser som den oprindelige todimensionelle matrix.

### Syntaks:

svc.PrependColumn(array_2d: any[0..*, 0..*], column: any[0..*]): any[0..*, 0..*]

### Parametre:

matrix_2d: Den allerede eksisterende matrix, kan være tom. Hvis denne matrix har en dimension, betragtes den som den sidste kolonne i den resulterende 2-dimensionelle matrix.

kolonne: En 1-dimensionel matrix med lige så mange elementer, som der er rækker i array_2d (matrix_2).

### Eksempel:

        Dim a As Variant, b As variant
        a = SF_Array.PrependColumn(Array(1, 2, 3), Array(4, 5, 6))
            ' ((4, 1), (5, 2), (6, 3))
        b = SF_Array.PrependColumn(Array(), Array(1, 2, 3))
            ' ∀ i ∈ {0 ≤ i ≤ 2} : b(0, i) ≡ i

## PrependRow

Tilføj en ny række i begyndelsen af en 2-matrix. Den resulterende matrix har den samme nedre grænse som den oprindelige 2-dimensionelle matrix.

### Syntaks:

svc.PrependRow(array_2d: any[0..*, 0..*], row: any[0..*]): any[0..*, 0..*]

### Parametre:

matrix_2d: Den allerede eksisterende matrix, kan være tom. Hvis denne matrix har 1 dimension, betragtes den som den sidste række i den resulterende 2-dimensionelle matrix.

række: En 1-dimensionel matrix, der indeholder ligeså mange elementer som der er kolonner i matrix_2d.

### Eksempel:

        Dim a As Variant, b As variant
        a = SF_Array.PrependRow(Array(1, 2, 3), Array(4, 5, 6))
            ' ((4, 5, 6), (1, 2, 3))
        b = SF_Array.PrependRow(Array(), Array(1, 2, 3))
            ' ∀ i ∈ {0 ≤ i ≤ 2} : b(i, 0) ≡ i

## RangeInit

Initialiser en ny nul-baseret matrix med numeriske værdier.

### Syntaks:

svc.RangeInit(from: num, upto: num, [bystep: num]): num[0..*]

### Parametre:

fra: Værdien af det første element.

op_ til: Det sidste element bør ikke overstige op_til.

i_trin: Forskellen mellem to på hinanden følgende elementer (standard = 1)

### Eksempel:

        Dim a As Variant
        a = SF_Array.RangeInit(10, 1, -1)
            ' (10, 9, 8, 7, 6, 5, 4, 3, 2, 1)

## Reverse

Returner den omvendte endimensionelle input-matrix.

### Syntaks:

svc.Reverse(array_1d: any[0..*]): any[0..*]

### Parametre:

matrix_1d: Den matrix, der skal vendes om.

### Eksempel:

        Dim a As Variant
        a = SF_Array.Reverse(Array("a", 2, 3, 4))
            ' (4, 3, 2, "a")

## Shuffle

Returnerer en tilfældig permutation af en 1-dimensionel matrix.

### Syntaks:

svc.Shuffle(array_1d: any[0..*]): any[0..*]

### Parametre:

matrix_1d: den matrix, der skal blandes,

### Eksempel:

        Dim a As Variant
        a = SF_Array.Shuffle(Array(1, 2, 3, 4))
            ' Matrix "a" er nu i tilfældig orden, fx (2, 3, 1, 4)

## Slice

Returnerer en delmængde af en 1-dimensionel matrix.

### Syntaks:

svc.Slice(array_1d: any[0..*], from: int, [upto: int]): any[0..*]

### Parametre:

matrix_1d: Den matrix, der skal skæres i skiver.

fra: Det nedre index i array_1d (matrix_1d) af det underindex, der skal uddrages (from inkluderet)

op_til: Det øvre_index i den array_1d (matrix) af den undermatrix, der skal uddrages (upto (op_til) medregnet). Standardværdien er array_1d (matrix_1d)s øvre grænse. Hvis upto (op_til) < from (op_til) er den returnerede matrix tom.

### Eksempel:

        Dim a As Variant
        a = SF_Array.Slice(Array(1, 2, 3, 4, 5), 1, 3) ' (2, 3, 4)

## Sort

Sorter en endimensionel matrix i stigende eller faldende rækkefølge. Tekstsammenligninger kan skelne mellem Store og små bogstaver eller ikke.
Matrixen skal være homogent fyldt, hvilket betyder, at elementerne skal være dem samme type skalarer.
Elementerne Empty og Null er tilladt. Traditionelt er Empty < Null < enhver anden skalar værdi.

### Syntaks:

svc.Sort(array_1d: any[0..*], sortorder: str, casesensitive: bool = False): any[0..*]

### Parametre:

matrix_1d: Den matrix, der skal sorteres.

sorteringsrækkefølge: Kan være enten "ASC" (stigende) (standard) eller "DESC" (faldende).

Stort-og-småt: Kun ved strengsammenligninger (standard = False (falsk)).

### Eksempel:

        Dim a As Variant
        a = SF_Array.Sort(Array("a", "A", "b", "B", "C"), CaseSensitive := True)
            ' ("A", "B", "C", "a", "b")

## SortColumns

Returner en permutation af kolonner i en todimensionel matrix, sorteret efter værdierne i en given række.
Rækken skal være homogent fyldt, det vil sige, at alle elementer skal være skalarer af den samme type. Elementerne
Empty og Null er tilladte. Traditionelt er Empty < Null < enhver anden skalar værdi..

### Syntaks:

svc.SortColumns(array_2d: any[0..*, 0..*], rowindex: int, sortorder: str, casesensitive: bool = False): any[0..*, 0..*]

### Parametre:

matrix_2d: Den 2-dimensionelle matrix, der skal sorteres.

rækkeindex: Indekset for den række, der bliver brugt som reference til sortering af kolonner.

sorteringsrækkefølge: Kan være enten "ASC" (stigende) (standard) eller "DESC" (faldende).

Stort-og-småt: Kun ved strengsammenligninger (standard = False (falsk)).

### Eksempel:

        ' arr = | 5, 7, 3 |
        '       | 1, 9, 5 |
        '       | 6, 1, 8 |
        Dim arr as Variant : arr = Array(5, 7, 3)
        arr = SF_Array.AppendRow(arr, Array(1, 9, 5))
        arr = SF_Array.AppendRow(arr, Array(6, 1, 8))
        arr = SF_Array.SortColumns(arr, 2, "ASC")
        ' arr = | 7, 5, 3 |
        '       | 9, 1, 5 |
        '       | 1, 6, 8 |

## SortRows

Returner en permutation af rækker i en todimensionel matrix, sorteret efter værdierne i en given kolonne.
kolonnen skal være homogent fyldt, derfor skal alle elementer være skalarer af den samme type.
Elementerne Empty og Null er tilladt, Traditionelt er Empty < Null < enhver anden skalar værdi.

### Syntaks:

svc.SortRows(array_2d: any[0..*, 0..*], columnindex: int, sortorder: str, casesensitive: bool = False): any[0..*, 0..*]

### Parametre:

matrix_2d: Den matrix, der skal sorteres.

kolonneindeks: Indekset for den kolonne, der skal bruges som reference for sortering af rækkerne.

sorteringsrækkefølge: Kan være enten "ASC" (stigende) (standard) eller "DESC" (faldende).

Stort-og-småt: Kun ved strengsammenligninger (standard = False (falsk)).

### Eksempel:

        ' arr = | 5, 7, 3 |
        '       | 1, 9, 5 |
        '       | 6, 1, 8 |
        Dim arr as Variant : arr = Array(5, 7, 3)
        arr = SF_Array.AppendRow(arr, Array(1, 9, 5))
        arr = SF_Array.AppendRow(arr, Array(6, 1, 8))
        arr = SF_Array.SortRows(arr, 0, "ASC")
        ' arr = | 1, 9, 5 |
        '       | 5, 7, 3 |
        '       | 6, 1, 8 |

## Transpose

Ombytter rækker og kolonner i en 2-dimensionel matrix.

### Syntaks:

svc.Transpose(array_2d: any[0..*, 0..*]): any[0..*, 0..*]

### Parametre:

matrix_2d: Den 2-dimensionellematrix, der skal transponeres.

### Eksempel:

        ' arr1 = | 1, 2 |
        '        | 3, 4 |
        '        | 5, 6 |
        arr1 = Array(1, 2)
        arr1 = SF_Array.AppendRow(arr1, Array(3, 4))
        arr1 = SF_Array.AppendRow(arr1, Array(5, 6))
        arr2 = SF_Array.Transpose(arr1)
        ' arr2 = | 1, 3, 5 |
        '        | 2, 4, 6 |
        MsgBox arr2(0, 2) ' 5

## TrimArray

Fjern alle Null, Empty og nul-længde-indførsler fra en endimensionel matrix.
Strengelementer trimmes med funktionen LibreOffice Basic Trim() .

### Syntaks:

svc.TrimArray(array_1d: any[0..*]): any[0..*]

### Parametre:

matrix_1d: Den matrix, derr skal beskæres.

### Eksempel:

        Dim a As Variant
        a = SF_Array.TrimArray(Array("A", "B", Null, " D "))
            ' ("A", "B", "D")

## Union

Bygger en mængde, som en nul-baseret matrix, ved at bruge foreningsoperatoren på de to input-matrixer. Resulterende elementer stammer fra en vilkårlig af de to matrixer.
Den resulterende matrix sorteres i stigende orden.
De to input-matrixer skal være homogent fyldt, deres elementer skal være skalarer af den samme type. Elementerne Empty (tom) og Null (nul ) er forbudte.
Tekstsammenligninger kan være Stort-og småt eller ikke.

### Syntaks:

svc.Union(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]

### Parametre:

matrix1_1d:Den første input-matrix.

matrix2_1d: Den anden input-matrix.

Stort-og-småt: Kun anvendelig, hvis matrixerne er befolket med strenge (standard = False (falsk)).

### Eksempel:

        Dim a As Variant
        a = SF_Array.Union(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
            ' ("A", "B", "C", "Z", "b")

## Unique

Byg et sæt af unikke værdier, afledt fra input-matrixet.
Input-matrixen skal være homogent fyldt, dets elementer sskal være skalarer af den samme type. Elementerne Empty og Null er ikke tilladt.
Tekstsammenligninger kan skelne mellem Store bogstaver og små eller ikke.

### Syntaks:

svc.Unique(array_1d: any[0..*], casesensitive: bool = False): any[0..*]

### Parametre:

matrix_1d: Input-matrixen.

Stort-og-småt:Kun anvendelig, hvis matrixen er befolket med strenge (standard = False (falsk)).

### Eksempel:

        Dim a As Variant
        a = SF_Array.Unique(Array("A", "C", "A", "b", "B"), CaseSensitive := True)
            '  ("A", "B", "C", "b")

Alle ScriptForge Basic-rutiner eller identifikatorer, der er indledet med et understreget tegn "_" er reserveret til internt brug. Det er ikke meningen, at de skal bruges i Basic-makroer eller Python-scripts.

Relaterede emner

Matrice-funktioner

Brug af Calc-funktioner i makroer

Tjenesten ScriptForge.Ordbog