ScriptForge.Matrise tjeneste

Gir en samling metoder for å manipulere og transformere matriser med én dimensjon (vektorer) og matriser med to dimensjoner (matriser). Dette inkluderer settoperasjoner, sortering, import fra og eksport til tekstfiler.

Matriser med mer enn to dimensjoner kan ikke brukes med metodene i denne tjenesten, det eneste unntaket er CountDims-metoden som godtar matriser med et hvilket som helst antall dimensjoner.

Matriseelementer kan inneholde alle typer verdier, inkludert (under)matriser.

Tjenesteaktivering

Før du bruker Matrise-tjenesten, må ScriptForge-biblioteket lastes ved å bruke:


    GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
  

Når du laster biblioteket, opprettes SF_Array-objektet som kan brukes til å kalle metodene i Tabell-tjenesten.

Følgende kodebiter viser de ulike måtene å kalle metoder i Matrise-tjenesten (tilføy-metoden brukes som et 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)
  
warning

Fordi Python har innebygd liste- og tuppelstøtte, er de fleste metodene i Matrise-tjenesten kun tilgjengelig for grunnleggende skript. Det eneste unntaket er ImportFromCSVFile som støttes i både Basic og Python.


Liste over metoder i Matrisetjenesten

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


tip

Det første argumentet for de fleste metoder er matrise-objektet som skal vurderes. Den sendes alltid ved referanse og forblir uendret. Metoder som Legg til, Legg til foran, osv. returnerer et nytt matrise-objekt etter at de er utført.


Append

Legger til elementene som er oppført som argumenter på slutten av inndatamatrisen.

Syntaks:

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

Parametre:

array_1d: Den eksisterende matrisen kan være tom.

arg0, arg1, ...: Elementer som vil bli lagt til array_1d.

Eksempel:


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

AppendColumn

Legger til en ny kolonne på høyre side av en todimensjonal matrise. Den resulterende matrisen har de samme nedre grensene som den første todimensjonale matrisen.

Syntaks:

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

Parametre:

array_2d: Den eksisterende matrisen kan være tom. Hvis den matrisen bare har én dimensjon, anses den som den første kolonnen i den resulterende todimensjonale matrisen.

kolonne: En 1-dimensjonal matrise med like mange elementer som det er rader i array_2d.

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

Legg til en ny rad nederst i en todimensjonal matrise. Den resulterende matrisen har de samme nedre grensene som den første todimensjonale matrisen.

Syntaks:

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

Parametre:

array_2d: Den eksisterende matrisen kan være tom. Hvis den matrisen har 1 dimensjon, anses den som den første raden i den resulterende 2-dimensjonale matrisen.

rad: En 1-dimensjonal matrise med like mange elementer som det er kolonner i array_2d.

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

Sjekk om en én-dimensjons matrise inneholder et bestemt tall, tekst eller dato. Tekstsammenligning kan skille mellom store og små bokstaver eller ikke.
Sorterte inndatamatriser må fylles homogent, noe som betyr at alle elementer må være skalarer av samme type (Tom og Null elementer er forbudt).
Resultatet av metoden er uforutsigbart når matrisen kunngjøres som sortert og i realiteten ikke er det.
Et binært søk gjøres når matrisen er sortert, ellers skannes den ganske enkelt fra topp til bunn og Tom og Null elementer ignoreres.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal skannes.

tofind: Et tall, en dato eller en streng som skal finnes.

skiller mellom store og små bokstaver: Bare for strengsammenligninger (Standard = Usann).

sortorder: Det kan enten være "ASC", "DESC" eller "" (ikke sortert). Standardverdien 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

Lagre innholdet i en 2-kolonner matrise i et ScriptForge.Dictionary-objektet.
Nøkkelen vil bli trukket ut fra den første kolonnen, elementet fra den andre.

Syntaks:

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

Parametre:

array_2d: Data som skal konverteres til et ScriptForge.Dictionary-objekt.

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

Oppretter en kopi av en 1D- eller 2D-matrise.

Syntaks:

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

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

Parametre:

array_nd: 1D- eller 2D-matrisen som skal kopieres.

Eksempel:

En enkel tilordning av et Matrise-objekt vil kopiere referansen i stedet for å lage en kopi av objektets innhold. Se eksempelet nedenfor:


    Dim a as Variant, b as Variant
    a = Array(1, 2, 3)
    ' Oppgaven nedenfor er laget ved referanse
    b = a
    ' Derfor vil endring av verdier i "b" også endre "a"
    b(0) = 10
    MsgBox a(0) ' 10
  

Ved å bruke Kopier-metoden lages en kopi av hele Matrise-objektet. I eksemplet nedenfor er a og b forskjellige objekter, og endring av verdier i b vil ikke påvirke verdiene i a .


    Dim a as Variant, b as Variant
    a = Array(1, 2, 3)
    ' Oppretter en kopi av "a" ved å bruke "Kopier"-metoden
    b = SF_Array.Copy(a)
    b(0) = 10
    MsgBox a(0) ' 1
  

CountDims

Tell antall dimensjoner til en matrise. Resultatet kan være større enn to.
Hvis argumentet ikke er en matrise, returnerer -1
Hvis matrisen ikke er initialisert, returnerer 0.

Syntaks:

svc.CountDims(array_nd: any): int

Parametre:

array_nd: Matrisen som skal undersøkes.

Eksempel:


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

Difference

Bygg et sett, som en nullbasert matrise, ved å bruke differanseoperatoren på de to inngangsmatrisene. Resulterende elementer kommer fra den første matrisen og ikke fra den andre.
Den resulterende matrisen er sortert i stigende rekkefølge.
Begge innput-matriser må fylles homogent, elementene deres må være skalarer av samme type. Tomme og Null elementer er forbudt.
Tekstsammenligning kan skille mellom store og små bokstaver.

Syntaks:

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

Parametre:

array1_1d: En 1-dimensjonal referansematrise, hvis elementer undersøkes for fjerning.

array2_1d: En 1-dimensjonal matrise, hvis elementer trekkes fra den første inngangsmatrisen.

skiller mellom store og små bokstaver: Dette argumentet er bare aktuelt hvis matrisene er fylt med strenger (Standard = Usann).

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 elementer i matrisen sekvensielt til en tekstfil. Hvis filen allerede eksisterer, vil den bli overskrevet uten forvarsel.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal eksporteres. Den må bare inneholde strenger.

filnavn: Navnet på tekstfilen som dataene skal skrives til. Navnet må uttrykkes i henhold til den gjeldende FilNavgivings-egenskapen til SF_FileSystem-tjenesten.

koding: Tegnsettet som skal brukes. Bruk ett av navnene som er oppført i IANA-tegnsett. Merk at LibreOffice kanskje ikke implementerer alle eksisterende tegnsett (standard er "UTF-8").

Eksempel:


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

ExtractColumn

Trekk ut en spesifikk kolonne fra en todimensjonal matrise som en ny matrise.
Dens nedre LBound og øvre UBound grenser er identiske med den for den første dimensjonen til inngangsmatrisen.

Syntaks:

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

Parametre:

array_2d: Matrisen det skal trekkes ut fra.

columnindex: Kolonnenummeret som skal trekkes ut - må være i intervallet [LBound, UBound].

Eksempel:


    'Oppretter en 3x3-matrise: |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))
    Trekker ut den tredje kolonnen: |3, 6, 9|
    col = SF_Array.ExtractColumn(mat, 2)
  

ExtractRow

Trekk ut en spesifikk rad fra en todimensjonal matrise som en ny matrise.
Dens nedre LBound og øvre UBound grenser er identiske med den for den andre dimensjonen til inngangsmatrisen.

Syntaks:

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

Parametre:

array_2d: Matrisen det skal trekkes ut fra.

rowindex: Radnummeret som skal trekkes ut - må være i intervallet [LBound, UBound].

Eksempel:


    'Oppretter en 3x3-matrise: |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))
    Trekker ut den første raden: |1, 2, 3|
    row = SF_Array.ExtractRow(mat, 0)
  

Flatten

Stable alle enkeltelementer i en matrise og alle elementer i undermatrisene i én ny matrise uten undermatriser. Tomme undermatriser ignoreres, og undermatriser med flere dimensjoner større enn én blir ikke flatet ut.

Syntaks:

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

Parametre:

array_1d: Den eksisterende matrisen 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)
  
tip

Du kan bruke Flatte-metoden sammen med andre metoder som Legg til eller Legg til foran for å sette sammen et sett med 1D-matriser til en enkelt 1D-matrise.


Eksempel:

Neste er et eksempel på hvordan metodene Flate og Legg til kan kombineres for å sette sammen tre matriser.


    'Lager tre matriser for dette eksemplet
    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)
    'Setter sammen de tre matrisene til en enkelt 1D-matrise
    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 dataene i en kommadelte verdier (CSV)-fil. Kommaet kan erstattes av et hvilket som helst tegn.

Det aktuelle CSV-formatet er beskrevet i IETF Common Format og MIME Type for CSV-filer.

Hver linje i filen inneholder en fullstendig post (linjedeling er ikke tillatt).
Sekvenser som \n, \t, ... forblir imidlertid uendret. Bruk metoden SF_String.Unescape() for å administrere dem.

Metoden returnerer en todimensjonal matrise hvis rader tilsvarer en enkelt post som er lest fra filen og hvis kolonner tilsvarer et felt i posten. Det foretas ingen kontroll av sammenhengen mellom felttypene på tvers av kolonnene. En beste gjetning vil bli gjort for å identifisere numeriske og datotyper.

Hvis en linje inneholder færre eller flere felt enn den første linjen i filen, vil et unntak bli skapt. Tomme linjer blir imidlertid ganske enkelt ignorert. Hvis størrelsen på filen overskrider grensen for antall elementer (se inne i koden), utløses en advarsel og matrisen avkortes.

Syntaks:

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

Parametre:

filnavn: Navnet på tekstfilen som inneholder dataene. Navnet må uttrykkes i henhold til den gjeldende FileName-egenskapen til SF_FileSystem-tjenesten.

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

datoformat: En spesiell mekanisme håndterer datoer når datoformat er enten "ÅÅÅÅ-MM-DD", "DD-MM-ÅÅÅÅ" eller "MM-DD-ÅÅÅÅ". Bindestreken (-) kan erstattes av en prikk (.), en skråstrek (/) eller et mellomrom. Andre datoformater vil bli ignorert. Datoer som skrives til en tom streng "" anses som normal tekst.

Eksempel:

Tenk på CSV-filen "myFile.csv" med følgende innhold:

Navn,Fødselsdato,Adresse,By

Anna,2002/03/31,"Rue de l'église, 21",Toulouse

Fred,1998/05/04,"Rue Albert Einstein, 113A",Carcassonne

Eksemplene nedenfor i Basic og Python leser innholdet i CSV-filen inn i et Matrise-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) ' Rue de l'église, 21
    MsgBox arr(1, 3) ' Toulouse
  
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]) # Rue de l'église, 21
    bas.MsgBox(arr[1][3]) # Toulouse
  

IndexOf

Se i en éndimensjons matrise etter et tall, en streng eller en dato. Tekstsammenligning kan skille mellom store og små bokstaver.
Hvis matrisen er sortert, må den fylles homogent, noe som betyr at alle elementer må være skalarer av samme type (Tom og Null elementer er forbudt).
Resultatet av metoden er uforutsigbart når matrisen settes til sortert og faktisk ikke er det.
Et binært søk utføres på sorterte matriser. Ellers skannes matriser ganske enkelt fra topp til bunn, og Tomme og Null elementer ignoreres.

Metoden returnerer LBound(innputt matrise) - 1 hvis søket ikke var vellykket.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal skannes.

å finne: Et tall, en dato eller en streng .

skiller mellom store og små bokstaver: Bare for strengsammenligninger (Standard = Usann).

sortorder: Det kan enten være "ASC", "DESC" eller "" (ikke sortert). Standardverdien 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

Sett inn før en gitt indeks for inndatamatrisen elementene som er oppført som argumenter.
Argumenter settes inn blindt. Hver av dem kan enten være en skalar av hvilken som helst type eller en undergruppe.

Syntaks:

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

Parametre:

array_1d: Den eksisterende matrisen kan være tom.

før: Indeksen før, som skal settes inn; må være i intervallet [LBound, UBound + 1].

arg0, arg1, ...: Elementer som vil bli satt inn i array_1d.

Eksempel:


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

InsertSorted

Setter inn et nytt element på sin plass i en sortert matrise.
Matrisen må fylles homogent, noe som betyr at alle elementer må være skalarer av samme type.
Tomme og Null elementer er forbudt.

Syntaks:

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

Parametre:

array_1d: Matrisen som verdien skal settes inn i.

item: Den skalære verdien som skal settes inn, av samme type som de eksisterende matriseelementene.

sorteringsrekkefølge: Det kan enten være "ASC" (standard) eller "DESC".

skille mellom store og små bokstaver: Bare for strengsammenligninger (Standard = Usann).

Eksempel:


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

Intersection

Bygg et sett, som en nullbasert matrise, ved å bruke skjæringssettoperatoren på de to inngangsmatrisene. Resulterende elementer finnes i begge matriser.
Den resulterende matrisen er sortert i stigende rekkefølge.
Begge innputt-matriser må fylles homogent, med andre ord må alle elementer være skalarer av samme type. Tomme og Null elementer er forbudt.
Tekstsammenligning kan skille mellom store og små bokstaver eller ikke.

Syntaks:

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

Parametre:

array1_1d: Den første inndatamatrisen.

array2_1d: Den andre inndatamatrisen.

skiller mellom store og små bokstaver: Gjelder for matriser fylt med tekstelementer (Standard = Usann).

Eksempel:


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

Join2D

Slå sammen en todimensjonal matrise med to skilletegn, én for kolonnene, én for radene.

Syntaks:

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

Parametre:

array_2d: Hvert element må være enten tekst, et tall, en dato eller en boolsk.
Datoer transformeres til formatet ÅÅÅÅ-MM-DD tt:mm:ss.
Ugyldige elementer erstattes av en streng med null lengde.

kolonneavgrensning: Avgrenser hver kolonne (standard = Tab/Chr(9)).

radavgrenser: Avgrenser hver rad (standard = LineFeed/Chr(10))

kvote: Hvis Sann, beskytt strenger med doble anførselstegn. Standard er Usann.

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

Sett foran på begynnelsen av inndatamatrisen elementene som er oppført som argumenter.

Syntaks:

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

Parametre:

array_1d: Den eksisterende matrisen kan være tom.

arg0, arg1, ...: En liste over elementer som skal legges til foran array_1d.

Eksempel:


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

PrependColumn

Sett en ny kolonne foran på venstre side av en todimensjonal matrise. Den resulterende matrisen har de samme nedre grensene som den første todimensjonale matrisen.

Syntaks:

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

Parametre:

array_2d: Den eksisterende matrisen kan være tom. Hvis den matrisen har 1 dimensjon, anses den som den siste kolonnen i den resulterende 2-dimensjonale matrisen.

kolonne: En 1-dimensjonal matrise med like mange elementer som det er rader i array_2d.

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

Legg til en ny rad i begynnelsen av en 2-dimensjonal matrise. Den resulterende matrisen har de samme nedre grensene som den første 2-dimensjonale matrisen.

Syntaks:

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

Parametre:

array_2d: Den eksisterende matrisen kan være tom. Hvis den matrisen har 1 dimensjon, anses den som den siste raden i den resulterende 2-dimensjonale matrisen.

rad: En 1-dimensjonal matrise som inneholder like mange elementer som det er kolonner i array_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 nullbasert matrise med numeriske verdier.

Syntaks:

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

Parametre:

fra: Verdien av det første elementet.

opptil: Det siste elementet skal ikke overstige opptil.

bystep: Forskjellen mellom to på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 éndimensjonale inndatamatrisen.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal reverseres.

Eksempel:


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

Shuffle

Returnerer en tilfeldig permutasjon av en endimensjonal matrise.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal blandes.

Eksempel:


    Dim a As Variant
    a = SF_Array.Shuffle(Array(1, 2, 3, 4))
        ' Array "a" er nå i tilfeldig rekkefølge, f.i. (2, 3, 1, 4)
  

Slice

Returnerer et delsett av en endimensjonal matrise.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal deles.

fra: Den nedre indeksen i array_1d av undergruppen som skal trekkes ut (fra inkludert)

opptil: Den øvre indeksen i array_1d av undergruppen som skal trekkes ut (opptil inkludert). Standardverdien er den øvre grensen til array_1d. Hvis opptil < fra så er den returnerte matrisen tom.

Eksempel:


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

Sort

Sorter en éndimensjons matrise i stigende eller synkende rekkefølge. Tekstsammenligninger kan skille mellom store og små bokstaver eller ikke.
Matrisen må fylles homogent, noe som betyr at elementer må være skalarer av samme type.
Tomme og Null elementer er tillatt. Konvensjonelt Tom < Null < enhver annen skalarverdi.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal sorteres.

sorteringsrekkefølge: Det kan enten være "ASC" (standard) eller "DESC".

skiller mellom store og små bokstaver: Bare for strengsammenligninger (Standard = Usann).

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 permutasjon av kolonnene i en todimensjonal matrise, sortert etter verdiene til en gitt rad.
Raden skal fylles homogent, noe som betyr at alle elementer må være skalarer av samme type.
Tomme og Null elementer er tillatt. Konvensjonelt Empty < Null < enhver annen skalarverdi.

Syntaks:

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

Parametre:

array_2d: Den 2-dimensjonale matrisen som skal sorteres.

rowindex: Indeksen til raden som skal brukes som referanse for å sortere kolonnene.

sorteringsrekkefølge: Det kan enten være "ASC" (standard) eller "DESC".

skiller mellom store og små bokstaver: Bare for strengsammenligninger (Standard = Usann).

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 permutasjon av radene i en todimensjonal matrise, sortert etter verdiene til en gitt kolonne.
Kolonnen må fylles homogent, derfor må alle elementer være skalarer av samme type.
Tomme og Null elementer er tillatt. Konvensjonelt Tom < Null < enhver annen skalarverdi.

Syntaks:

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

Parametre:

array_2d: Matrisen som skal sorteres.

columnindex: Indeksen til kolonnen som skal brukes som referanse for å sortere radene.

sorteringsrekkefølge: Det kan enten være "ASC" (standard) eller "DESC".

skiller mellom store og små bokstaver: Bare for strengsammenligninger (Standard = Usann).

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

Bytter rader og kolonner i en todimensjonal matrise.

Syntaks:

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

Parametre:

array_2d: Den 2-dimensjonale matrisen som 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, Tomme og null-lengde oppføringer fra en éndimensjons matrise.
Strengelementer trimmes med LibreOffice Basic Trim()-funksjonen.

Syntaks:

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

Parametre:

array_1d: Matrisen som skal trimmes.

Eksempel:


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

Union

Bygger et sett, som en nullbasert matrise, ved å bruke unionsoperatoren på de to inngangsmatrisene. Resulterende elementer kommer fra en av begge matrisene.
Den resulterende matrisen er sortert i stigende rekkefølge.
Begge innputt-matrisene må fylles homogent, elementene deres må være skalarer av samme type. Tomme og Null elementer er forbudt.
Tekstsammenligning kan skille mellom store og små bokstaver.

Syntaks:

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

Parametre:

array1_1d: Den første inndatamatrisen.

array2_1d Den andre inndatamatrisen.

skiller mellom store og små bokstaver: Gjelder bare hvis matrisene er fylt med strenger (Standard = Usann).

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

Bygg et sett med unike verdier utledet fra inndatamatrisen.
Inndatamatrisen må fylles homogent, elementene må være skalarer av samme type. Tomme og Null elementer er forbudt.
Tekstsammenligning kan skille mellom store og små bokstaver.

Syntaks:

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

Parametre:

array_1d: Inndatamatrisen.

skiller mellom store og små bokstaver: Gjelder bare hvis matrisen er fylt med strenger (Standard = Usann).

Eksempel:


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

Alle ScriptForge Grunnleggende rutiner eller identifikatorer som er prefikset med et understrekingstegn "_" er reservert for intern bruk. De er ikke ment å brukes i grunnleggende makroer eller Python-skript.


Supporter oss!