Storitev ScriptForge.Array (SF_Array)

Vsebina
Kazalo 🔎︎

# Storitev ScriptForge.Array

Ponuja zbirko metod za ravnanje z in preoblikovanje enodimenzionalnih polj (vektorjev) in dvodimenzionalnih polj (matrik). To vključuje operacije nad množicami, razvrščanje ter uvažanje in izvažanje besedilnih datotek.

Polj z več kot dvema dimenzijama ni možno uporabljati z metodami te storitve, edina izjema je metoda CountDims, ki sprejema polja poljubnih dimenzij.

Elementi polja so lahko vrednosti poljubne vrste, vključno s (pod)polji.

## Priklic storitve

Pred uporabo storitve Array je potrebno naložiti knjižnico ScriptForge:

          GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")

Z nalaganjem knjižnice ustvarite predmet SF_Array, ki ga lahko uporabite za klicanje metod v storitvi Array.

Naslednji odlomki kode kažejo različne načina klica metod storitve Array (metoda Append služi kot primer):

          SF_Array.Append(...)

          Dim arr    :    arr = SF_Array
          arr.Append(...)

          Dim arr    :    arr = CreateScriptService("Array")
          arr.Append(...)

Metoda CreateScriptService je na voljo šele po nalaganju knjižnice ScriptForge.

Metode
Append AppendColumn AppendRow Contains ConvertToDictionary 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

Prvi argument večine metod je predmet polja, ki bo obravnavan. Vedno je podan s sklicem in se ne spreminja. Metode, kot so Append, Prepend itn. po izvedbi vrnejo nov predmet polja.

## Append

Doda elemente, navedene kot argumente, na konec vhodnega polja.

### Skladnja:

          SF_Array.Append(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant

### Parametri:

Array_1D: predobstoječa matrika, lahko je prazna.

arg0, ...: seznam elementov, ki jih želite pripeti, dodati polju Array_1D.

### Primer:

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

## AppendColumn

Doda nov stolpec na desno stran dvodimenzionalnega polja. Končno polje ima enako spodnjo mejo kot začetno dvodimenzionalno polje.

### Skladnja:

          SF_Array.AppendColumn(Array_2D As Variant, New_Column As Variant) As Variant

### Parametri:

Array_2D: predobstoječa matrika, lahko je prazna. Če ima to polje samo eno dimenzijo, velja kot prvi stolpec rezultatskega dvodimenzionalnega polja.

New_Column: 1-dimenzionalno polje s toliko elementi, kolikor je vrstic v Array_2D.

### Primer:

          Sub Example_AppendColumn()
          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
          End Sub

## AppendRow

Doda novo vrstico na dno dvodimenzionalnega polja. Končno polje ima enako spodnjo mejo kot začetno dvodimenzionalno polje.

### Skladnja:

          SF_Array.AppendRow(Array_2D As Variant, Row As Variant) As Variant

### Parametri:

Array_2D: predobstoječa matrika, lahko je prazna. Če je to polje enodimenzionalno, šteje za prvo vrstico ciljnega dvodimenzionalnega polja.

Row: enodimenzionalno polje s toliko elementi, kolikor je stolpcev v polju Array_2D.

### Primer:

          Sub Example_AppendRow()
          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
          End Sub

## Contains

Preveri, če enodimenzionalno polje vsebuje določeno število, besedilo ali datum. Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.
Vhodna razvrščena polja morajo biti zapolnjena homogeno, kar pomeni, da morajo biti vsi njihovi elementi skalarji iste vrste (elementa Empty in Null sta prepovedana).
Rezultat metode je nepredvidljiv, če je polje razglašeno za razvrščeno, pa dejansko ni.
Dvojiško iskanje se izvee, ko je polje razvrščeno, sicer se preprosto preišče od vrha do dna, elementi Empty in Null pa so prezrti.

### Skladnja:

          SF_Array.Contains(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Boolean

### Parametri:

Array_1D: polje za pregled.

ToFind: iskano število, datum ali niz.

CaseSensitive: samo za primerjavo nizov, privzeto = False.

SortOrder: vrstni red razvrščanja, možne vrednosti so "ASC", "DESC" in "" (= ni razvrščeno, privzeta vrednost).

### Primer:

          Sub Example_Contains()
          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
          End Sub

## ConvertToDictionary

Shrani vsebino dvostolpčnega polja v predmet ScriptForge.Dictionary.
Ključ bo izluščen iz prvega stolpca, element iz drugega.

### Skladnja:

          SF_Array.ConvertToDictionary(Array_2D As Variant) As Variant

### Parametri:

Array_1D: prvi stolpec mora vsebovati izključno nize dolžine > 0, v poljubnem zaporedju.

### Primer:

          Sub Example_ConvertToDictionary()
          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
          End Sub

## CountDims

Preštej število dimenzij matrike. Rezultat je lahko večji od dva.
Če argument ni matrika, vrne -1
Če matrika ni inicializirana, vrne 0.

### Skladnja:

          SF_Array.CountDims(Array_ND As Variant) As Integer

### Parametri:

Array_ND: polje za preučevanje.

### Primer:

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

## Difference

Tvori množico, kot ničelno polje, tako da izvede operacijo razlike na obeh vhodnih poljih. Elementi rezultata izvirajo iz prvega polja, ne iz drugega.
Polje rezultata je razvrščeno v naraščajočem vrstnem redu.
Obe vhodni polji morata biti homogeno zapolnjeni, kar pomeni, da morajo biti vsi njuni elementi skalarji iste vrste. Elementa Empty in Null sta prepovedana.
Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.

### Skladnja:

          SF_Array.Difference(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant

### Parametri:

Array1_1D: enodimenzionalno referenčno polje, katerega elemente pregledujemo za odstranitev.

Array2_1D: enodimenzionalno polje, katerega elementi se odštevajo od prvega vhodnega polja.

CaseSensitive: samo če so polja izpolnjena z nizi, privzeto = False.

### Primer:

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

## ExportToTextFile

Zapiši vse elemente polja zaporedno v besedilno datoteko. Če datoteka že obstaja, bo prepisana brez opozorila.

### Skladnja:

          SF_Array.ExportToTextFile(Array_1D As Variant, FileName As String, [Encoding As String]) As Boolean

### Parametri:

Array_1D: matrika za izvoz. Vsebovati mora zgolj nize.

FileName: ime besedilne datoteke, ki vsebuje podatke. Ime je izraženo kot jo podaja trenutna lastnost FileNaming storitve SF_FileSystem. Privzeto = poljubno (sprejeta tako v zapisu URL kot v domorodnem zapisu operacijskega sistema).

Encoding: nabor znakov, ki naj bo uporabljen. Uporabi eno od imen, navedenih v naborih znakov IANA (v angl. jeziku). Upoštevajte, da LibreOffice morda ne podpira vseh obstoječih naborov znakov. Privzeta vrednost je »UTF-8«.

### Primer:

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

## ExtractColumn

Izveleč določen stolpec iz dvodimenzionalnega polja kot novo polje.
Njeni spodnja meja LBound in zgornja meja UBound sta identični mejam prve razsežnosti vhodnega polja.

### Skladnja:

          SF_Array.ExtractColumn(Array_2D As Variant, ColumnIndex As Long) As Variant

### Parametri:

Array_2D: polje, iz katerega želite izvleči podatke.

ColumnIndex: številka stolpca, ki ga želite izvleči – mora biti v intervalu [LBound, UBound].

### Primer:

          Sub Example_ExtractColumn
             'Ustvari polje 3x3: |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))
             'Izvleče tretji stolpec: |3, 6, 9|
             col = SF_Array.ExtractColumn(mat, 2)
          End Sub

## ExtractRow

Izloči določeno vrstico iz dvodimenzionalnega polja kot novo polje.
Njeni spodnja meja LBound in zgornja meja UBound sta identični mejam druge razsežnosti vhodnega polja.

### Skladnja:

          SF_Array.ExtractRow(Array_2D As Variant, RowIndex As Long) As Variant

### Parametri:

Array_2D: polje, iz katerega želite izvleči podatke.

RowIndex: številka vrstice, ki jo želite izvleči – mora biti v intervalu [LBound, UBound].

### Primer:

          Sub Example_ExtractRow
             'Ustvari polje 3x3: |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))
             'Izvleče prvo vrstico: |1, 2, 3|
             row = SF_Array.ExtractRow(mat, 0)
          End Sub

## Flatten

Zloži vse posamezne elemente polja in vse elemente njenih podpolj v eno samo novo polje brez podpolj. Prazna podpolja so prezrta in podpolja več kot ene dimenzije niso sploščena.

### Skladnja:

          SF_Array.Flatten(Array_1D As Variant) As Variant

### Parametri:

Array_1D: predobstoječa matrika, lahko je prazna.

### Primer:

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

Metodo Flatten lahko uporabite z drugimi metodami, kot sta Append in Prepend, da spojite množico enodimenzionalnih polj v eno samo enodimenzionalno polje.

### Primer:

Sledi primer, kako lahko kombinirate metodi Flatten in Append, da spojite tri polja.

          Sub Concatenate_Example
             'Ustvari tri polja za ta primer
             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)
             'Poveže oz. spoji tri polja v eno samo enodimenzionalno polje
             Dim arr as Variant
             arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
             '(1, 2, 3, 4, 5, 6, 7, 8, 9)
          End Sub

## ImportFromCSVFile

Uvozi podatke, vsebovane v datoteki, ločeni z vejicami (CSV). Vejico lahko zamenja poljuben znak.

Uporabljeni zapis CSV je podrobno opisan na strani IETF Common Format and MIME Type for CSV Files (v angl.).

Vsaka vrstica v datoteki vsebuje poln zapis (deljenje vrstic ni dovoljeno).
Zaporedja \n, \t itn. pa ostanejo nespremenjena. Uporabite metodo SF_String.Unescape() za njihovo upravljanje.

Metoda vrne dvodimenzionalno polje, katerega vrstice ustrezajo posameznim zapisom, prebranim iz datoteke, in katerega stolpci ustrezajo poljem v zapisih. Pri tem se ne izvede preverjanje o koherentnosti vrst polj po stolpcih. Opravljena bo presoja za identifikacijo številskih in datumskih vrst.

Če vrstica vsebuje manj ali več polj kot prva vrstica v datoteki, prikliče izjemo. Prazne vrstice pa so enostavno prezrte. Če velikost datoteke presega mejno število elementov (glejte kodo), javi napako in polje je okrajšano.

### Skladnja:

          SF_Array.ImportFromCSVFile(FileName As String, [Delimiter As String], [DateFormat As String]) As Variant

### Parametri:

FileName: ime besedilne datoteke, ki vsebuje podatke. Ime je izraženo kot jo podaja trenutna lastnost FileNaming storitve SF_FileSystem. Privzeto = poljubno (sprejeta tako v zapisu URL kot v domorodnem zapisu operacijskega sistema).

Delimiter: posamezen znak kot ločilo, običajno vejica, podpičje ali tabulator. Privzeto = ",".

DateFormat: datume obravnava poseben mehanizem, ko je oblika datuma DateFormat ena od vrednosti "YYYY-MM-DD", "DD-MM-YYYY" ali "MM-DD-YYYY". Pomišljaj (-) lahko zamenjate s piko (.), poševnico (/) ali presledkom. Druge oblike datuma bodo prezrte. Datumi s privzeto vrednostjo "" veljajo za navadno besedilo.

### Primer:

Glede na to datoteko CSV:

          Name,DateOfBirth,Address,City
          Anna,2002/03/31,"Rue de l'église, 21",Toulouse
          Fred,1998/05/04,"Rue Albert Einstein, 113A",Carcassonne

          Sub Example_ImportFromCSVFile()
          Dim a As Variant
              a = SF_Array.ImportFromCSVFile("C:\Temp\myFile.csv", DateFormat := "YYYY/MM/DD")
              MsgBox a(0, 3)    ' City
              MsgBox TypeName(a(1, 2))    ' Date
              MsgBox a(2, 2)    ' Rue Albert Einstein, 113A
          End Sub

## IndexOf

V enodimenzionalnem polju poiščite število, niz ali datum. Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.
Če je polje razvrščeno, mora biti zapolnjeno homogeno, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste (elementa Empty in Null sta prepovedana).
Rezultat metode je nepredvidljiv, če je polje razglašeno za razvrščeno, pa dejansko ni.
V razvrščenih poljih se izvede dvojiško iskanje. Sicer se polja enostavno pregleda od vrha do dna in elementi Empty in Null so prezrti.
Ta metoda vrne LBound(input array) - 1, če iskanje ni bilo uspešno.

### Skladnja:

          SF_Array.IndexOf(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Long

### Parametri:

Array_1D: polje za pregled.

ToFind: iskano število, datum ali niz.

CaseSensitive: samo za primerjavo nizov, privzeto = False.

SortOrder: način razvrščenosti, t.j. "ASC", "DESC" ali "" (= ni razvrščeno, to je privzeta vrednost)

### Primer:

          Sub Example_IndexOf()
              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
          End Sub

## Insert

Elemente, nanizane kot argumente, vstavi v vhodno polje pred danim indeksom.
Argumenti so naključno vstavljeni. Vsak izmed njih je lahko skalar ali poljubna vrsta podpolja.

### Skladnja:

          SF_Array.Insert(Array_1D As Variant, Before As Long, arg0 As Variant, [arg1 As Variant], ...) As Variant

### Parametri:

Array_1D: predobstoječa matrika, lahko je prazna.

Before: indeks, pred katerim želimo vstavljati; mora biti v intervalu [LBound, UBound + 1].

arg0, ...: seznam elementov za vstavljanje v polje Array_1D.

### Primer:

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

## InsertSorted

Na njemu ustrezno mesto v razvrščeno polje vstavi nov element.
Polje mora biti homogeno zapolnjeno, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste.
Elementa Empty in Null sta prepovedana.

### Skladnja:

          SF_Array.InsertSorted(Array_1D As Variant, Item As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant

### Parametri:

Array_1D: polje za razvrščanje.

Item: skalarna vrednost za vstavljanje, iste vrste kot obstoječi elementi polja.

SortOrder: "ASC" (privzeto) ali "DESC".

CaseSensitive: samo za primerjavo nizov, privzeto = False.

### Primer:

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

## Intersection

Tvori množico, kot ničelno polje, tako da izvede operacijo preseka na obeh vhodnih poljih. Elementi rezultata se nahajajo v obeh poljih.
Polje rezultata je razvrščeno v naraščajočem vrstnem redu.
Obe vhodni polji morata biti homogeno zapolnjeni, kar pomeni, da morajo biti vsi njuni elementi skalarji iste vrste. Elementa Empty in Null sta prepovedana.
Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.

### Skladnja:

          SF_Array.Intersection(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant

### Parametri:

Array1_1D: prvo vhodno polje.

Array2_1D: drugo vhodno polje.

CaseSensitive: velja za polja, zapolnjena z besedilnimi elementi, privzeto = False.

### Primer:

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

## Join2D

Združi dvodimenzionalno polje z dvema ločiloma: prvim za stolpce, drugim za vrstice.

### Skladnja:

          SF_Array.Join2D(Array_2D As Variant, ColumnDelimiter As String, RowDelimiter As String, Quote As Boolean) As String

### Parametri:

Array_2D: dvodimenzionalno polje, vsak njegov element mora biti besedilo, število, datum ali logična vrednost.
Datumi se pretvorijo v obliko LLLL-MM-DD uu:mm:ss.
Neveljavne elemente zamenja niz ničelne dolžine.

ColumnDelimiter: ločilo med stolpci (privzeto = tabulator/Chr(9)).

RowDelimiter: ločilo med vrsticami (privzeto = LineFeed/Chr(10))

Quote: če je True, zaščiti nize z dvojnimi narekovaji. Privzeta vrednost je False.

### Primer:

          Sub Example_Join2D()
          -                     | 1, 2, "A", [2020-02-29], 5      |
          -    SF_Array.Join_2D(| 6, 7, "this is a string", 9, 10 |, ",", "/")
          -            ' "1,2,A,2020-02-29 00:00:00,5/6,7,this is a string,9,10"
          End Sub

## Prepend

Elemente, nanizane kot argumente, vstavi na začetek vhodnega polja.

### Skladnja:

          SF_Array.Prepend(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant

### Parametri:

Array_1D: predobstoječa matrika, lahko je prazna.

arg0, ...: seznam elementov, ki jih želite pripeti na začetek polja Array_1D.

### Primer:

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

## PrependColumn

Pripne nov stolpec na levo stran dvodimenzionalnega polja. Končno polje ima enako spodnjo mejo kot začetno dvodimenzionalno polje.

### Skladnja:

          SF_Array.PrependColumn(Array_2D As Variant, Column As Variant) As Variant

### Parametri:

Array_2D: predobstoječa matrika, lahko je prazna. Če je to polje enodimenzionalno, šteje za zadnji stolpec ciljnega dvodimenzionalnega polja.

Column: 1-dimenzionalno polje s toliko elementi, kolikor je vrstic v Array_2D.

### Primer:

          Sub Example_PrependColumn()
          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
          End Sub

## PrependRow

Doda novo vrstico na začetek dvodimenzionalnega polja. Končno polje ima enako spodnjo mejo kot začetno dvodimenzionalno polje.

### Skladnja:

          SF_Array.PrependRow(Array_2D As Variant, Row As Variant) As Variant

### Parametri:

Array_2D: predobstoječa matrika, lahko je prazna. Če je to polje enodimenzionalno, šteje za zadnjo vrstico ciljnega dvodimenzionalnega polja.

Row: 1-dimenzionalno polje s toliko elementi, kolikor je vrstic v Array_2D.

### Primer:

          Sub Example_PrependRow()
          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
          End Sub

## RangeInit

Inicializira novo ničelno polje s številskimi vrednostmi.

### Skladnja:

          SF_Array.RangeInit(From As [number], UpTo As [number] [, ByStep As [number]]) As Variant

### Parametri:

From: vrednost prvega elementa.

UpTo: zadnji element naj ne presega UpTo.

ByStep: razlika med dvema zaporednima elementoma (privzeto = 1).

### Primer:

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

## Reverse

Vrne preobrnjeno enodimenzionalno vhodno matriko.

### Skladnja:

          SF_Array.Reverse(Array_1D As Variant) As Variant

### Parametri:

Array_1D: polje, ki ga želimo preobrniti.

### Primer:

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

## Shuffle

Vrne poljubno permutacijo enodimenzionalnega polja.

### Skladnja:

          SF_Array.Shuffle(Array_1D As Variant) As Variant

### Parametri:

Array_1D: polje, ki ga želimo premešati.

### Primer:

          Sub Example_Shuffle()
          Dim a As Variant
              a = SF_Array.Shuffle(Array(1, 2, 3, 4))
                  ' Nepredvidljivo
          End Sub

## Slice

Vrne podmnožico enodimenzionalnega polja.

### Skladnja:

          SF_Array.Slice(Array_1D As Variant, From As Long, [UpTo As Long]) As Variant

### Parametri:

Array_1D: polje, ki ga želite razrezati.

From: spodnji indeks v Array_1D podpolja za izvlečenje (vključno s From)

UpTo: zgornji indeks Array_1D podpolja za izvlečenje (vključno z UpTo). Privzeto = zgornja meja Array_1D. Če je UpTo < From, bo vrnjeno polje prazno.

### Primer:

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

## Sort

Razvrsti enodimenzionalno polje po naraščajočem ali padajočem vrstnem redu. Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.
Polje mora biti homogeno zapolnjeno, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste.
Elementa Empty in Null sta dovoljena. Običajno velja: Empty < Null < poljubna druga skalarna vrednost.

### Skladnja:

          SF_Array.Sort(Array_1D As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant

### Parametri:

Array_1D: polje za razvrščanje.

SortOrder: "ASC" (privzeto) ali "DESC".

CaseSensitive: samo za primerjavo nizov, privzeto = False.

### Primer:

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

## SortColumns

Vrne permutacijo stolpcev v dvodimenzionalnem polju, razvščenih po vrednostih v podani vrstici.
Vrstica mora biti homogeno zapolnjena, kar pomeni, da morajo biti vsi njeni elementi skalarji iste vrste.
Elementa Empty in Null sta dovoljena. Običajno velja: Empty < Null < poljubna druga skalarna vrednost.

### Skladnja:

          SF_Array.SortColumns(Array_1D As Variant, RowIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant

### Parametri:

Array_1D: polje za razvrščanje.

RowIndex: indeks vrstice, glede na katero bodo razvrščeni stolpci.

SortOrder: "ASC" (privzeto) ali "DESC".

CaseSensitive: samo za primerjavo nizov, privzeto = False.

### Primer:

          Sub Example_SortColumns()
          -                         | 5, 7, 3 |            ' | 7, 5, 3 |
          -    SF_Array.SortColumns(| 1, 9, 5 |, 2, "ASC") ' | 9, 1, 5 |
          -                         | 6, 1, 8 |            ' | 1, 6, 8 |
          End Sub

## SortRows

Vrne permutacijo vrstic v dvodimenzionalnem polju, razvščenih po vrednostih v podanem stolpcu.
Stolpec mora biti homogeno zapolnjen, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste.
Elementa Empty in Null sta dovoljena. Običajno velja: Empty < Null < poljubna druga skalarna vrednost.

### Skladnja:

          SF_Array.SortRows(Array_1D As Variant, ColumnIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant

### Parametri:

Array_1D: polje za razvrščanje.

RowIndex: indeks stolpca, glede na katerega bodo razvrščene vrstice.

SortOrder: "ASC" (privzeto) ali "DESC".

CaseSensitive: samo za primerjavo nizov, privzeto = False.

### Primer:

          Sub Example_SortRows()
          -                      | 5, 7, 3 |            ' | 1, 9, 5 |
          -    SF_Array.SortRows(| 1, 9, 5 |, 2, "ASC") ' | 5, 7, 3 |
          -                      | 6, 1, 8 |            ' | 6, 1, 8 |
          End Sub

## Transpose

Zamenja vrstice in stolpce v dvodimenzionalnem polju.

### Skladnja:

          SF_Array.Transpose(Array_2D As Variant) As Variant

### Parametri:

Array_2D: polje za transponiranje.

### Primer:

          Sub Example_Transpose()
          -                       | 1, 2 |  ' | 1, 3, 5 |
          -    SF_Array.Transpose(| 3, 4 |) ' | 2, 4, 6 |
          -                       | 5, 6 |
          End Sub

## TrimArray

Iz enodimenzionalnega polja odstrani vse vnose Null in Empty ter vnose ničelne dolžine.
Nizi so okrajšani s funkcijo LibreOffice Basic Trim().

### Skladnja:

          SF_Array.TrimArray(Array_1D As Variant) As Variant

### Parametri:

Array_1D: polje za pregled.

### Primer:

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

## Union

Tvori množico, kot ničelno polje, tako da izvede operacijo unije na obeh vhodnih poljih. Elementi rezultata izvirajo iz obeh polj.
Polje rezultata je razvrščeno v naraščajočem vrstnem redu.
Obe vhodni polji morata biti homogeno zapolnjeni, kar pomeni, da morajo biti vsi njuni elementi skalarji iste vrste. Elementa Empty in Null sta prepovedana.
Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.

### Skladnja:

          SF_Array.Union(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant

### Parametri:

Array1_1D: prvo vhodno polje.

Array2_1D: drugo vhodno polje.

CaseSensitive: samo če so polja izpolnjena z nizi, privzeto = False.

### Primer:

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

## Unique

Sestavite množico enkratnih vrednosti, ki izhajajo iz vhodnega polja.
Vhodno polje mora biti homogeno zapolnjeno, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste. Elementa Empty in Null sta prepovedana.
Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.

### Skladnja:

          SF_Array.Unique(Array_1D As Variant, CaseSensitive As Boolean]) As Variant

### Parametri:

Array_1D: vhodna matrika.

CaseSensitive: samo če je polje izpolnjeno z besedili oz. nizi, privzeto = False.

### Primer:

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

Vsi podprogrami ali identifikatorji ScriptForge Basic s predpono podčrtaja (»_«) so rezervirani za interno uporabo. Uporabi v makrih Basic niso namenjeni.

Podobne teme

Funkcije za matrike

Klicanje funkcij programa Calc

Storitev ScriptForge.Dictionary