ScriptForge.Array service

Pateikiamas vienmačių (vektorių) ir dvimačių masyvų (matricų) manipuliavimo ir transformavimo metodų rinkinys. Tai apima operacijų rinkinius, rūšiavimą, importavimą į tekstinius failus ir eksportavimą iš jų.

Šios paslaugos metodai gali būti naudojami tik vienmačiams ir dvimačiams masyvams, vienintelė išimtis yra CountDims metodas, kuriam tinka bet kokio matmenų skaičiaus masyvai.

Masyvo elementai gali būti bet kurio tipo reikšmės, įskaitant ir pačius masyvus.

Paslaugos iškvietimas

Prieš naudojantis Array paslauga reikia įkelti ScriptForge biblioteką naudojantis:


      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
   

Įkėlus biblioteką bus sukurtas SF_Array objektas, kurį galima naudoti norint iškviesti metodus iš Array paslaugas.

Šie kodo fragmentai rodo įvairius būdus, kaip iškviesti metodus, esančius Array paslauga (pavyzdžiui, naudojamas metodas Pridėti):


      SF_Array.Append(...)
   

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

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

Metodas CreateScriptService galimas tik įkėlus ScriptForge biblioteką.


Metodai

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


tip

Pirmasis daugumos metodų argumentas yra masyvo objektas. Jis visada perduodamas nuoroda ir lieka nepakitęs. Tokie metodai, kaip „Append“, „Prepend“ ir pan., grąžina naują masyvo objektą.


Append

Įvedimo masyvo pabaigoje pridedami elementai, išvardyti kaip argumentai.

Sintaksė:


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

Parametrai:

Array_1D : iš pradžių masyvas gali būti tuščias.

arg0, ... : sąrašas elementų, kurie bus pridedami prie „Array_1D“.

Pavyzdys:


      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

Dešinėje dviejų matmenų masyvo pusėje pridedamas naujas stulpelis. Gautas masyvas turi tuos pačius apatinius rėžius, kaip ir pradinio dviejų matmenų masyvo.

Sintaksė:


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

Parametrai:

Array_2D: esamas masyvas gali būti tuščias. Jei masyvas yra vienmatis, jis laikomas gauto dvimačio masyvo pirmuoju stulpeliu.

Naujas_stulpelis: vienmatis masyvas turi tiek elementų, kiek eilučių yra Array_2D masyve.

Pavyzdys:


      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

Dešinėje dviejų matmenų masyvo pusėje pridedamas naujas stulpelis. Gautas masyvas turi tuos pačius apatinius rėžius, kaip ir pradinio dviejų matmenų masyvo.

Sintaksė:


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

Parametrai:

Array_2D: esamas masyvas gali būti tuščias. Jei masyvas yra vienmatis, jis laikomas gauto dvimačio masyvo pirmuoju stulpeliu.

Eilutė: Vienmatis masyvas turi tiek elementų, kiek yra Array_2D stulpelių.

Pavyzdys:


      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

Patikrinkite, ar vienmačiame masyve yra tam tikras skaičius, tekstas ar data. Lyginant tekstą galima skirti didžiąsias ir mažąsias raides, arba ne.
Rikiuoti pradiniai masyvai turi būti užpildyti vienarūšiais duomenimis, kas reiškia, kad visi elementai turi būti to paties paprastojo tipo (elementai Tušti ir Nuliniai draudžiami).
Metodo rezultatas yra neapibrėžtas, kai masyvas skelbiamas surikiuotu, o iš tikrųjų nėra.
Dvejetainė paieška atliekama sutvarkius masyvą, priešingu atveju jis tiesiog nuskaitomas iš viršaus į apačią ir ignoruojami elementai Tušti ir Nuliniai.

Sintaksė:


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

Parametrai:

Array_1D : masyvas skaitymui.

ToFind : skaičius, data arba eilutė, kuriuos reikia rasti.

CaseSensitive : Tik lyginant eilutes, numatytoji reikšmė = False.

SortOrder : "ASC", "DESC" or "" (= nerikiuota, numatyta)

Pavyzdys:


      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

Store the content of a 2-columns array into a ScriptForge.Dictionary object.
The key will be extracted from the first column, the item from the second.

Sintaksė:


      SF_Array.ConvertToDictionary(Array_2D As Variant) As Variant
   

Parametrai:

Masyvas_1D: pirmame stulpelyje turi būti tik eilutės, kurių ilgis > 0, bet kuria tvarka.

Pavyzdys:


      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

Suskaičiuokite masyvo matmenų skaičių. Rezultatas gali būti didesnis nei du.
Jei argumentas nėra masyvas, tai grąžinama -1
Jei masyvas neinicijuotas, tai grąžina 0.

Sintaksė:


      SF_Array.CountDims(Array_ND As Variant) As Integer
   

Parametrai:

Array_ND : masyvas tikrinimui.

Pavyzdys:


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

Difference

Sukurkite rinkinį, kaip nulinį masyvą, taikydami skirtumo operatorių dviem pradiniams masyvams. Rezultatai gaunami iš pirmojo masyvo, o ne iš antrojo.
Gautas masyvas išrikiuojamas didėjimo tvarka.
Abi pradiniai masyvai turi būti užpildyti vienodai, jų elementai turi būti to paties tipo paprastieji duomenys. Draudžiami elementai Tušti ir Null.
Lyginant tekstą didžiosios ir mažosios raidės gali būti skiriamos arba neskiriamos.

Sintaksė:


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

Parametrai:

Array1_1D : Vienmatis nuorodų masyvas, kurio elementai tikrinami, ar reikia juos pašalinti.

Array2_1D : Vienmatis masyvas, kurio elementai atimami iš pirmojo pradinio masyvo.

CaseSensitive : Tik tiems masyvams, kurie užpildyti eilutėmis, numatyta = False.

Pavyzdys:


      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

Surašo visus masyvo elementus nuosekliai į teksto failą. Jei toks failas jau yra, bus užrašoma ant viršaus be perspėjimo.

Sintaksė:


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

Parametrai:

Array_1D : Masyvas eksportavimui. Turi būti sudarytas tik iš eilučių.

Failo vardas: teksto failo, kuriame yra duomenys, pavadinimas. Pavadinimas nurodomas taip, kaip nurodyta dabartinės paslaugos SF_FileSystem savybėje FileNaming. Numatytasis = bet kuris (leidžiamas ir URL formatas, ir savosios operacinės sistemos formatas).

Kodavimas : Simbolių seka, kuri turi būti naudojama. Naudokite vieną iš čia išvardytų pavadinimų IANA character sets. Pastebėkime, kad „LibreOffice“ gali neįdiegti visų esamų simbolių rinkinių. Numatytasis parametras yra „UTF-8“.

Pavyzdys:


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

ExtractColumn

Ištraukite iš dvimačio masyvo konkretų stulpelį kaip naują masyvą.
Šio masyvo apatinis LBound ir viršutinis UBound rėžiai yra tokie pat, kaip ir pirmojo pradinio masyvo.

Sintaksė:


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

Parametrai:

Array_2D : Masyvas, iš kurio ištraukiama.

ColumnIndex : Stulpelio numeris, kurį reikia gauti, turi būti intervale [LBound, UBound].

Pavyzdys:


      Sub Example_ExtractColumn
         'Sukuria 3x3 matricą: |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))
         'Ištraukia trečiąjį stulpelį: |3, 6, 9|
         col = SF_Array.ExtractColumn(mat, 2)
      End Sub
   

ExtractRow

Ištraukite iš dvimačio masyvo konkretų stulpelį kaip naują masyvą.
Šio masyvo apatinis LBound ir viršutinis UBound rėžiai yra tokie pat, kaip ir pirmojo pradinio masyvo.

Sintaksė:


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

Parametrai:

Array_2D : Masyvas, iš kurio ištraukiama.

EilutėsIndeksas: Eilutės numeris, kurį reikia gauti, turi būti iš intervalo [ApRėžs, ViRėžis].

Pavyzdys:


      Sub Example_ExtractRow
         'Sukuria 3x3 matricą: |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))
         'Ištraukia pirmąją eilutę: |1, 2, 3|
         row = SF_Array.ExtractRow(mat, 0)
      End Sub
   

Flatten

Sudėkite visus atskirus masyvo elementus ir visus jo elementus į vieną naują masyvą. Tuščių dalinių masyvų nepaisoma. Daliniai masyvai, kurių matmenų skaičius yra didesnis nei vienas, nėra sugriaunami.

Sintaksė:


      SF_Array.Flatten(Array_1D As Variant) As Variant
   

Parametrai:

Array_1D : iš pradžių masyvas gali būti tuščias.

Pavyzdys:


      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
   
tip

Norėdami susieti vienmatį masyvų rinkinį į vieną vienmatį masyvą, galite naudoti Flatten metodą kartu su kitais metodais, pvz., Pridėti arba Prepend.


Pavyzdys:

Kitas pavyzdys, kaip metodai Flatten ir Append gali sujungti tris masyvus.


      Sub Concatenate_Example
         'Šiam pavyzdžiui sukuria tris masyvus
         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)
         'Sujungia tris masyvus į vieną vienmatį masyvą
         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

Importuokite kableliais atskirtus failo (CSV) duomenis. Kablelį galima pakeisti bet kuriuo simboliu.

Taikomas CSV formatas aprašytas dokumente IETF bendraisi formatas ir MIME tipas CSV failams.

Kiekvienoje failo eilutėje yra visas įrašas (eilučių skaidyti negalima).
Tačiau tokios sekos kaip \n, \t , ... lieka nepakeistos. Joms valdyti naudokite metodą SF_eilutė .Unescape ().

Metodas pateikia dviejų matmenų masyvą, kurio eilutės atitinka vieną faile perskaitytą įrašą, o stulpeliai – įrašo lauką. Stulpelių lauko tipų atitikimas netikrinamas. Geriausia identifikuojami skaičių ir datų tipai.

Jei eilutėje yra mažiau ar daugiau laukų nei pirmoje failo eilutėje, bus formuojama išimtis. Tačiau tuščius eilutės tiesiog nepaisomos. Jei failo dydis viršija elementų skaičiaus limitą (žr. kodo viduje), įspėjima ir masyvas sutrumpinamas.

Sintaksė:


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

Parametrai:

Failo vardas: teksto failo, kuriame yra duomenys, pavadinimas. Pavadinimas nurodomas taip, kaip nurodyta dabartinės paslaugos SF_FileSystem savybėje FileNaming. Numatytasis = bet kuris (leidžiamas ir URL formatas, ir savosios operacinės sistemos formatas).

Skirtukas: Vienas simbolis, dažniausiai kablelis, kabliataškis arba tabuliacijos ženklas. Numatyta = ",".

DatosFormatas: specialus mechanizmas tvarko datas, kai DatosFormatos yra „MMMM-MM-DD“, „DD-MM-YYYY“ arba „MM-DD-YYYY“. Brūkšnelis (-) gali būti pakeistas tašku (.), pasviruoju brūkšniu (/) arba tarpu. Kiti datos formatai bus ignoruojami. Datos, kurių numatytasis formatas yra "", laikomos įprastu tekstu.

Pavyzdys:

Duotas CSV failas:


      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

Vienmačiame masyve ieškokite skaičiaus, eilutės ar datos. Lyginant tekstą didžiosios ir mažosios raidės gali būti skiriamos.
Jei masyvas yra surikiuotas, jis turi būti užpildytas vienos rūšies duomenimis, o tai reiškia, kad visi elementai turi būti to paties paprastojo tipo (draudžiama naudoti Empty ir Null).
Metodo rezultatas yra neapibrėžtas, kai masyvas skelbimas surikiuotas, o iš tikrųjų taip nėra.
Dvejetainė paieška atliekama surikiuotuose masyvuose. Kitu atveju masyvai paprasčiausiai nuskaitomi iš viršaus į apačią ir ignoruojami elementai Empty ir Null.

Jei paieška nebuvo sėkminga, metodas grąžina ApRėžis (įvesties masyvas) - 1.

Sintaksė:


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

Parametrai:

Array_1D: masyvas skaitymui.

ToFind: skaičius, data arba eilutė, kuriuos reikia rasti.

CaseSensitive : Tik lyginant eilutes, numatytoji reikšmė = False.

SortOrder : "ASC", "DESC" arba "" (= nerikiuota, numatyta)

Pavyzdys:


      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

Prieš nurodytą įvesties masyvo indeksą įterpkite elementus, nurodytus kaip argumentus.
Argumentai įterpiami aklai. Kiekvienas iš jų gali būti bet kokio paprastojo tipo duomuo arba masyvo dalis.

Sintaksė:


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

Parametrai:

Array_1D: iš pradžių masyvas gali būti tuščias.

Prieš: indeksas, prieš kurį reikia įterpti; turi būti iš intervalo [ApRėžis, ViRėžis + 1].

arg0, ...: elementų, kuriuos reikia įterpti, sąrašas Array_1D.

Pavyzdys:


      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

Į surikiuotą masyvą įterpkite naują elementą.
Masyvas turi būti užpildytas vienos rūšies duomenimis, tai reiškia, kad visi elementai turi būti to paties paprastojo tipo duomenys. Elementai
Empty ir Null draudžiami.

Sintaksė:


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

Parametrai:

Array_1D: Masyvas rikiavimui.

Elementas : Paprastojo tipo reikšmė įterpimui, to paties tipo kaip ir esami masyvo elementai.

RikiavimoTvarka : "ASC" (numatyta) arba "DESC".

SkirtiRaidžiųLygį: Tik lyginant eilutes, numatytoji reikšmė = False.

Pavyzdys:


      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

Sukurkite rinkinį, kaip nulinį masyvą, taikydami sankirtos aibės operatorių dviem pradiniams masyvams. Rezultatai įrašomi į abu masyvus.
Gautas masyvas rikiuojamas didėjimo tvarka.
Abi pradiniai masyvai turi būti užpildyti vienos rūšies duomenimis, kitaip tariant, visi elementai turi būti to paties paprastojo tipo duomenys. Draudžiami elementai yra Empty ir Null.
Lyginant tekstą didžiosios ir mažosios raidės gali būti skiriamos arba ne.

Sintaksė:


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

Parametrai:

Array1_1D: Pirmasis pradinis masyvas.

Array2_1D: Antrasis pradinis masyvas.

SkirtiRaidžiųLygį: Tik tiems masyvams, kurie užpildyti tekstiniais elementai, numatyta = False.

Pavyzdys:


      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

Sujunkite dviejų matmenų masyvo elementus naudodami du skirtukus: vienas skirtas stulpeliams, kitas - eilutėms.

Sintaksė:


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

Parametrai:

Array_2D: Kiekvienas elementas turi būti tekstas, skaičius, data arba loginė reikšmė.
Datos transformuojamos į MMMM-MM-DD hh: mm: ss formatą.
Neteisingi elementai pakeičiami nulio ilgio eilute.

StulpeliųSkirtukas : Skiria kiekvieną stulpelį (numatyta = Tab/Chr(9)).

EilučiųSkirtukas: skiria kiekvieną eilutę (numatyta = LineFeed/Chr(10))

Kabutės: jei True, tai apgaubkite eilutes dvigubomis kabutėmis. Numatytoji būsena yra False.

Pavyzdys:


      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

Pridėkite įvesties masyvo pradžioje elementus, nurodytus kaip argumentai.

Sintaksė:


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

Parametrai:

Array_1D: iš pradžių masyvas gali būti tuščias.

arg0, ...: pridedamų elementų sąrašas Array_1D.

Pavyzdys:


      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

Kairėje dviejų matmenų masyvo pusėje pridedamas naujas stulpelis. Gautas masyvas turi tuos pačius apatinius rėžius, kaip ir pradinis dviejų matmenų masyvas.

Sintaksė:


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

Parametrai:

Array_2D: esamas masyvas gali būti tuščias. Jei masyvas yra vienmatis, jis laikomas gauto dvimačio masyvo paskutiniu stulpeliu.

Stulpelis: vienmatis masyvas turi tiek elementų, kiek eilučių yra Array_2D masyve.

Pavyzdys:


      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

Viršuje dviejų matmenų masyvo pridedama eilutė. Gautas masyvas turi tuos pačius apatinius rėžius, kaip ir pradinis dviejų matmenų masyvas.

Sintaksė:


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

Parametrai:

Array_2D: esamas masyvas gali būti tuščias. Jei masyvas yra vienmatis, jis laikomas gauto dvimačio masyvo paskutine eilute.

Stulpelis: vienmatis masyvas turi tiek elementų, kiek eilučių yra Array_2D masyve.

Pavyzdys:


      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

Inicijuokite naują skaitinį nulinių reikšmių masyvą.

Sintaksė:


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

Parametrai:

Nuo: pirmoji elemento reikšmė.

Iki: Paskutinis elementas neturi viršyti iki.

Žingsnis: Skirtumas tarp dviejų vienas po kito einančių elementų (numatytoji reikšmė = 1).

Pavyzdys:


      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

Grąžinkite atvirkštinį vienmatį pradinį masyvą.

Sintaksė:


      SF_Array.Reverse(Array_1D As Variant) As Variant
   

Parametrai:

Array_1D: atvirkštinis masyvas.

Pavyzdys:


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

Shuffle

Grąžinama atsitiktinė vienmačio masyvo permutacija.

Sintaksė:


      SF_Array.Shuffle(Array_1D As Variant) As Variant
   

Parametrai:

Array_1D: masyvas permutacijai.

Pavyzdys:


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

Slice

Grąžinamas vienmačio masyvo poaibis.

Sintaksė:


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

Parametrai:

Array_1D: masyvas postūmiui.

Nuo: Masyvo poaibio ištrauktas apatinis rėžis Array_1D (Nuo įskaitytinai)

Iki: Masyvo poaibio ištrauktas viršutinis rėžis Array_1D (Iki imtinai). Numatyta = viršutinis masyvo Array_1D rėžis. Jei Iki < Nuo, tai grąžinamas tuščias masyvas.

Pavyzdys:


      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

Reikia surikiuoti vienmatį masyvą didėjimo arba mažėjimo tvarka. Lyginant tekstus didžiosios ir mažosios raidės arba skiriamos, arba ne.
Masyvas turi būti užpildytas vienodo tipo duomenimis, t. y. elementai turi būti to paties paprastojo tipo reikšmės. Leistini elementai
Empty ir Null. Paprastai Empty < už Null < už bet kurią kitą skaliarinę reikšmę.

Sintaksė:


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

Parametrai:

Array_1D: masyvas rikiavimui.

RikiavimoTvarka : "ASC" (numatyta) arba "DESC".

SkirtiRaidžiųLygį: Tik lyginant eilutes, numatytoji reikšmė = False.

Pavyzdys:


      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

Return a permutation of the columns of a two dimension array, sorted on the values of a given row.
The row must be filled homogeneously, which means that all items must be scalars of the same type.
Empty and Null items are allowed. Conventionally Empty < Null < any other scalar value.

Sintaksė:


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

Parametrai:

Array_1D : The array to sort.

RowIndex : The index of the row to sort the columns on.

SortOrder : "ASC" (default) or "DESC".

CaseSensitive : Only for string comparisons, default = False.

Pavyzdys:


      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

Return a permutation of the rows of a two dimension array, sorted on the values of a given column.
The column must be filled homogeneously, therefore all items must be scalars of the same type.
Empty and Null items are allowed. Conventionally Empty < Null < any other scalar value.

Sintaksė:


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

Parametrai:

Array_1D : The array to sort.

RowIndex : The index of the column to sort the rows on.

SortOrder : "ASC" (default) or "DESC".

CaseSensitive : Only for string comparisons, default = False.

Pavyzdys:


      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

Swap rows and columns in a two dimension array.

Sintaksė:


      SF_Array.Transpose(Array_2D As Variant) As Variant
   

Parametrai:

Array_2D : The array to transpose.

Pavyzdys:


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

TrimArray

Remove from a one dimension array all Null, Empty and zero-length entries.
String items are trimmed with LibreOffice Basic Trim() function.

Sintaksė:


      SF_Array.TrimArray(Array_1D As Variant) As Variant
   

Parametrai:

Array_1D : The array to scan.

Pavyzdys:


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

Union

Build a set, as a zero-based array, by applying the union operator on the two input arrays. Resulting items originate from both arrays.
The resulting array is sorted in ascending order.
Both input arrays must be filled homogeneously, their items must be scalars of the same type. Empty and Null items are forbidden.
Text comparison can be case sensitive or not.

Sintaksė:


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

Parametrai:

Array1_1D : The first input array.

Array2_1D : The second input array.

CaseSensitive : Only if the arrays are populated with strings, default = False.

Pavyzdys:


      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

Build a set of unique values derived from the input array.
The input array must be filled homogeneously, its items must be scalars of the same type. Empty and Null items are forbidden.
Text comparison can be case sensitive or not.

Sintaksė:


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

Parametrai:

Array_1D : The input array.

CaseSensitive : Only if the array is populated with texts, default = False.

Pavyzdys:


      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
   
warning

Visos „ScriptForge“ „Basic“ įprastos funkcijos ar identifikatoriai, kuriuose prieš prefiksus yra pabraukimo ženklas „_“, yra skirti vidiniam naudojimui. Jie nenaudojami „Basic“ makrokomandose.


Paremkite mus!