ScriptForge.Array zerbitzua (SF_Array)

Edukiak
Indizea 🔎︎

# ScriptForge.Array zerbitzua

Dimentsio bakarreko matrizeak (bektoreak) eta bi dimentsiotako matrizeak aldatzeko metodoen bilduma bat eskaintzen du. Besteak beste, ezartzeko eragiketak, ordenatzekoak eta testu-fitxategietatik inportatzeko eta esportatzekoak ditu.

Bi dimentsio baino gehiago dituzten matrizeak ezin dira erabili zerbitzu honetako metodoekin. Salbuespen bakarra CountDims metodoa da, horrek edozein dimentsio kopuru duten matrizeak onartzen baititu.

Matrize-elementuek edozein motatako balioak eduki ditzakete, baita azpimatrizeak ere.

## Zerbitzuari deitzea

Array zerbitzua erabili baino lehen, ScriptForge liburutegia kargatu behar da honakoa erabilita:

          GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")

Liburutegia kargatzean SF_Array objektua sortuko da, era horren bidez Array zerbitzuko metodoak deitu ahal izango dira.

Hurrengo kode-zatiek Array zerbitzuko metodoak deitzeko modu desberdinak erakusten dituzte (adibide gisa Append metodoa erabili da):

          SF_Array.Append(...)

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

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

CreateScriptService metodoa erabilgarri egoteko, lehenengo ScriptForge liburutegia kargatu behar da.

Metodoak
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

Metodo askoren lehen argumentua erabiliko den matrize-objektua da. Beti erreferentzia gisa pasatuko da eta ez du aldaketarik izango. 'Append', 'Prepend' eta antzeko metodoek matrize-objektu berria itzuliko dute exekutatuak izan ondoren.

## Append

Argumentu gisa zerrendatutako elementuak sarrerako matrizearen amaieran eransten ditu.

### Sintaxia:

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

### Parametroak:

Array_1D : Lehendik dagoen matrizea, hutsik egon daiteke.

arg0, ... : 'Matrizea_1D' matrizeari erantsiko zaizkion elementuen zerrenda.

### Adibidea:

          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

Zutabe bat eransten du bi dimentsioko matrize baten eskuineko aldean. Emaitza modura sortuko den matrizeak hasierako bi dimentsioko matrizearen beheko muga berak izango ditu.

### Sintaxia:

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

### Parametroak:

Array_2D : lehendik dagoen matrize bat, hutsik egon daiteke. Matrizeak dimentsio bakarra badu, emaitza gisa lortuko den bi dimentsioko matrizearen lehen zutabetzat hartuko da.

New_Column : Array_2D matrizean dauden errenkada kopuruaren elementu kopuru bera duen dimentsio bakarreko matrize bat.

### Adibidea:

          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

Erantsi errenkada berria bi dimentsioko matrize baten beheko aldean. Emaitza modura sortuko den matrizeak hasierako bi dimentsioko matrizearen beheko muga berak izango ditu.

### Sintaxia:

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

### Parametroak:

Array_2D : lehendik dagoen matrize bat, hutsik egon daiteke. Matrizeak dimentsio bakarra badu, emaitza gisa lortuko den bi dimentsioko matrizearen lehen zutabetzat hartuko da.

Row : dimentsio bakarreko matrize bat, "Array_2D" matrizeak duen zutabe kopuruaren bezainbeste elementu dituena.

### Adibidea:

          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

Egiaztatu dimentsio bakarreko matrize batek zenbaki, testu edo data jakin bat duen. Testu-konparazioak maiuskulak/minuskulak kontuan hartu ditzake edo ez.
Sarrerako matrize ordenatuak modu homogeneoan bete behar dira, alegia, elementu guztiek mota bereko eskalarrak izan behar dute (Empty eta Null elementuak debekatuta daude).
Metodoaren emaitza aurresanezina da matrizea ordenatua dela iragartzen bada eta halakoa ez bada.
Bilaketa bitarra egiten da matrizea ordenatzen denean; bestela, goitik behera eskaneatu besterik ez da egiten eta Empty eta Null elementuei ez ikusiarena egiten zaie.

### Sintaxia:

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

### Parametroak:

Array_1D: eskaneatuko den matrizea.

ToFind : bilatuko den zenbaki, data edo kate bat.

CaseSensitive : Kate-konparazioetarako soilik, balio lehenetsia = False da.

SortOrder : "ASC", "DESC" edo "" (= ez ordenatua, lehenetsia)

### Adibidea:

          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

Biltegiratu 2 zutabetako matrize baten edukia ScriptForge.Dictionary objektu batean.
Gakoa lehen zutabetik erauziko da, elementua bigarrenetik.

### Sintaxia:

          SF_Array.ConvertToDictionary(Array_2D As Variant) As Variant

### Parametroak:

Array_1D : lehen zutabeak luzera > 0 duten kateak soilik eduki behar ditu, edozein ordenatan.

### Adibidea:

          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

Zenbatu matrize baten dimentsio kopurua. Emaitza bi baino handiagoa izan daiteke.
Argumentua ez bada matrize bat, -1 itzultzen du
Matrizea hasieratu ez bada, 0 itzultzen du.

### Sintaxia:

          SF_Array.CountDims(Array_ND As Variant) As Integer

### Parametroak:

Array_ND : aztertuko den matrizea.

### Adibidea:

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

## Difference

Eraiki multzo bat, zeron oinarritutako matrize gisa, sarrerako bi matrizeei diferentzia eragilea aplikatuta. Emaitza gisa sortutako elementuak lehen matrizetik sortuko dira, ez bigarrenetik.
Emaitzako matrizea gorantz ordenatuta egongo da.
Sarrerako bi matrizeek modu homogeneoan beteta egon behar dute, alegia, beren elementuek mota bereko eskalarrak izan behar dute. Empty eta Null elementuak debekatuta daude.
Testu-konparazioak maiuskulak/minuskulak kontuan hartu ditzake edo ez.

### Sintaxia:

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

### Parametroak:

Array1_1D : Dimentsio bakarreko erreferentziako matrizea. Matrize horren elementuak aztertuko dira kenduko diren ala ez ebazteko.

Array2_1D : Dimentsio bakarreko matrizea. Matrize horren elementuak sarrerako lehen matrizetik kenduko dira.

CaseSensitive : Matrizeak kateekin beteta badaude soilik, balio lehenetsia = False.

### Adibidea:

          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

Idatzi matrize bateko elementu guztiak modu sekuentzialean testu-fitxategi batean. Fitxategia lehendik badago, hura gainidatziko da abisurik gabe.

### Sintaxia:

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

### Parametroak:

Array_1D : Esportatuko den matrizea. Kateak soilik izan behar ditu.

FileName : Datuak dituen testu-fitxategiaren izena. Izena SF_FileSystem zerbitzuko uneko FileNaming propietateak emandako moduan adierazi behar da . Balio lehenetsia = any (URL formatua zein sistema eragilearen jatorrizko formatua onartzen dira).

Encoding : Erabili behar den karaktere-jokoa. Erabili IANA karaktere-jokoak atalean zerrendatutako izen bat. Kontuan izan LibreOffice aplikazioak ez dituela zertan existitzen diren karaktere-joko guztiak inplementatu. Balio lehenetsia "UTF-8" da.

### Adibidea:

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

## ExtractColumn

Erauzi zutabe zehatz bat bi dimentsiotako matrize batetik, matrize berria sortzeko.
Beheko LBound eta goiko UBound mugak sarrerako matrizearen lehen dimentsioak dituenen berdinak dira.

### Sintaxia:

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

### Parametroak:

Array_2D : Erauzpena jasango duen matrizea.

ColumnIndex : Erauziko den zutabearen zenbakia. [LBound, UBound] barrutian egon behar du.

### Adibidea:

          Sub Example_ExtractColumn
             '3x3 matrize bat sortzen du: |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))
             'Hirugarren zutabea erauzten du: |3, 6, 9|
             col = SF_Array.ExtractColumn(mat, 2)
          End Sub

## ExtractRow

Erauzi errenkada zehatz bat bi dimentsiotako matrize batetik, matrize berria sortzeko.
Beheko LBound eta goiko UBound mugak sarrerako matrizearen lehen dimentsioak dituenen berdinak dira.

### Sintaxia:

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

### Parametroak:

Array_2D : Erauzketa matrize honetatik egingo da.

RowIndex : Erauziko den errenkadaren zenbakia. [LBound, UBound] barrutian egon behar du.

### Adibidea:

          Sub Example_ExtractRow
             '3x3 matrize bat sortzen du: |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))
             'Lehen errenkada erauzten du: |1, 2, 3|
             row = SF_Array.ExtractRow(mat, 0)
          End Sub

## Flatten

Pilatu matrize berri batean, azpimatrizerik gabe, matrize bateko elementu bakarrak eta bere azpimatrizeetako elementu guztiak. Azpimatrize hutsei ez ikusiarena egingo zaie eta dimentsio bat baino gehiago ditzuten azpimatrizeak ez dira berdinduko.

### Sintaxia:

          SF_Array.Flatten(Array_1D As Variant) As Variant

### Parametroak:

Matrizea_1D : Lehendik dagoen matrizea, hutsik egon daiteke.

### Adibidea:

          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

Flatten metodoa erabili daiteke, Append edo Prepend edo beste metodo batzuekin batera, 1D matrizeen multzo bat 1D matrize bakarrean kateatzeko.

### Adibidea:

Hurrengo adibidean, Flatten eta Append metodoak hiru matrize kateatzeko nola erabili daitezkeen azaltzen da.

          Sub Concatenate_Example
             'Hiru matrize sortzen ditu adibide honetarako
             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)
             'Hiru matrize kateatzen ditu 1D matrize bakar batean
             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

Inportatu komaz banandutako balioen (CSV) fitxategi bateko datuak. Komaren ordez beste karaktere bat erabili daiteke.

CSV formatu aplikagarria IETF Common Format and MIME Type for CSV Files webgunean dago deskribatuta.

Fitxategiko lerro bakoitzak erregistro oso bat du (ez dago onartuta lerroak zatitzea).
Hala ere, \n, \t eta antzeko sekuentziak aldaketarik gabe uzten dira. Erabili SF_String.Unescape() metodoa haiek kudeatzeko.

Metodo honek bi dimentsiotako matrize bat itzultzen du. Matrizearen errenkada bakoitza fitxategian irakurritako erregistro bakar bati dagokio, eta zutabeak erregistroko zutabeei dagozkie. Ez da egiaztatzerik egiten eremu motek zutabez zutabe duten koherentzia ziurtatzeko. Estimazio bat egingo da zenbakizko motak eta datak diren motak identifikatzeko.

Lerroak fitxategiko lehen lerroak baino eremu gehiago edo gutxiago baditu, salbuespen bat sortuko da. Lerro hutsei ez ikusiarena egingo zaie. Fitxategiaren tamainak elementu kopuruaren muga gainditzen badu (ikusi kodea barruan), abisu bat sortuko da eta matrizea moztu egingo da.

### Sintaxia:

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

### Parametroak:

FileName : Datuak dituen testu-fitxategiaren izena. Izena nola adieraziko den zehazteko, SF_FileSystem zerbitzuaren uneko FileNaming propietatea erabiliko da. Lehenetsia = edozein (URL formatua zein sistema eragilearen jatorrizko formatua onartzen dira).

Delimiter : Karaktere bakarra, normalean koma bat, puntu eta koma bat edo tabulazio-karaktere bat. Lehenetsia = ",".

DateFormat : Mekanismo berezi batek maneiatzen ditu datak DateFormat honakoetako bat bada: "UUUU-HH-EE", "EE-HH-UUUU" edo "HH-EE-UUUU". Marratxoaren (-) ordez puntu bat (.), barra bat (/) edo zuriune bat erabili daiteke. Beste data-formatu batzuei ez ikusiarena egingo zaie. Lehenespen modura "" diren datak testu normaltzat hartzen dira.

### Adibidea:

Honako CSV fitxategi bat emanda:

          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

Bilatu dimentsio bakarreko matrize batean zenbaki, kate edo data bat. Testu-konparazioak maiuskulak/minuskulak kontuan hartu ditzake edo ez.
Matrizea ordenatuta badago, modu homogeneneoan bete behar da, alegia, elementu guztiek mota bereko eskalarrak izan behar dute (Empty eta Null elementuak debekatuta daude).
Metodoaren emaitza ezin da aurresan matrizea ordenatuta dagoela esaten bada baina ez badago.
Ordenatutako matrizeetan bilaketa bitarra exekutatzen da. Bestela, matrizeak goitik behera eskaneatzen dira eta Empty eta Null elementuei ez ikusiarena egiten zaie.
Metodoak LBound(sarrerako matrizea) - 1 itzultzen du bilaketak arrakastarik izan ez badu.

### Sintaxia:

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

### Parametroak:

Array_1D : Eskaneatuko den matrizea.

ToFind : Bilatuko den zenbaki, data edo kate bat.

CaseSensitive : Kate-konparazioetarako soilik, lehenetsia = False (faltsua).

SortOrder : "ASC", "DESC" edo "" (= ordenatu gabea, lehenetsia)

### Adibidea:

          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

Sartu argumentu gisa zerrendatutako elementuak sarrerako matrizearen indize jakin baten aurrean.
Argumentuak itsuan txertatuko dira. Horietako bakoitza eskalar bar izan daiteke edo edozein motatako azpimatrize bat izan daiteke.

### Sintaxia:

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

### Parametroak:

Array_1D : Lehendik dagoen matrizea, hutsik egon behar du.

Before : Txertatzea indize honen aurrean gertatuko da; [LBound, UBound + 1] tartean egon behar du.

arg0, ... : Array_1D barruan txertatuko diren elementuen zerrenda.

### Adibidea:

          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

Txertatu elementu berri bat bere tokian ordenatutako matrize batean.
Matrizea modu homogeneoan beteta egon behar du, alegia, elementu guztiek mota bereko eskalarrak izan behar dute.
Empty eta Null elementuak debekatuta daude.

### Sintaxia:

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

### Parametroak:

Array_1D : Ordenatuko den matrizea.

Item : Txertatuko den eskalarra, matrizean lehendik dauden elementuen mota berekoa.

SortOrder : "ASC" (lehenetsia) edo "DESC".

CaseSensitive : Kate-konparazioetarako soilik, lehenetsia = False (faltsua).

### Adibidea:

          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

Eraiki multzo bat, zeron oinarritutako matrize gisa, sarrerako bi matrizeen ebakidura-eragiketa aplikatuta. Emaitza gisa lortutako elementuak bi matrizeetan daudenak dira.
Emaitza gisa lortutako matrizea gorantz ordenatuta dago.
Sarrerako bi matrizeek modu homogeneoan beteta egon behar dute, alegia, elementu guztiek mota bereko eskalarrak izan behar dute. Empty eta Null elementuak debekatuta daude.
Testu-konparazioan maiuskulak/minuskulak kontuan hartu daitezke edo ez.

### Sintaxia:

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

### Parametroak:

Array1_1D : Sarrerako lehen matrizea.

Array2_1D : Sarrerako bigarren matrizea.

CaseSensitive : Matrizeak testu-elementuek beteta badaude soilik, balio lehenetsia = False (faltsua).

### Adibidea:

          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

Elkartu bi dimentsioko matrize bat bi mugatzailerekin, bat zutabeentzat eta bestea errenkadentzat.

### Sintaxia:

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

### Parametroak:

Array_2D : Elementu bakoitzak testu, zenbaki, data edo boolear izan behar du.
Datak UUU-HH-EE oo:mm:ss formatura bihurtuko da.
Baliogabeko elementuak zero luzerako kateekin ordeztuko dira.

ColumnDelimiter : Zutabe bakoitza mugatzen du (balio lehenetsia = Tab/Chr(9)).

RowDelimiter: Errenkada bakoitza mugatzen du (balio lehenetsia = LineFeed/Chr(10))

Quote : True (egia) bada, babestu kateak komatxo bikoitzekin. Balio lehenetsia False (faltsua) da.

### Adibidea:

          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

Kokatu argumentu gisa zerrendatutako elementuak sarrerako matrizearen hasieran.

### Sintaxia:

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

### Parametroak:

Array_1D : Lehendik dagoen matrizea, hutsik egon daiteke.

arg0, ... : Array_1D matrizearen aurrean kokatuko diren elementuen zerrenda.

### Adibidea:

          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

Erantsi zutabe berri bat bi dimentsioko matrize baten ezkerreko aldean. Emaitza gisa sortutako matrizeak hasierako bi dimentsioko matrizearen beheko muga berak izango ditu.

### Sintaxia:

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

### Parametroak:

Array_2D : Lehendik dagoen matrizea, hutsik egon daiteke. Matrizeak dimentsio bakarra badu, sortuko den bi dimentsioko matrizearen azken zutabetzat hartuko da.

Column : Dimentsio bakarreko matrizea, Array_2D matrizean dauden errenkada kopuruaren bezain beste elementu dituena.

### Adibidea:

          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

Erantsi errenkada berri bat bi dimentsioko matrize baten hasieran. Emaitza gisa sortutako matrizeak hasierako bi dimentsioko matrizearen beheko muga berak izango ditu.

### Sintaxia:

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

### Parametroak:

Array_2D : Lehendik dagoen matrizea, hutsik egon daiteke. Matrizeak dimentsio bakarra badu, sortuko den bi dimentsioko matrizearen azken errenkadatzat hartuko da.

Row : Dimentsio bakarreko matrizea, Array_2D matrizean dauden errenkada kopuruaren bezain beste elementu dituena.

### Adibidea:

          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

Hasieratu zeron oinarritutako matrize berri bat zenbakizko balioekin.

### Sintaxia:

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

### Parametroak:

From : Lehen elementuaren balioa.

UpTo : Azken elementuak ez du UpTo gainditu behar.

ByStep : Elkarren ondoan dauden bi elementuen arteko diferentzia (balio lehenetsia = 1).

### Adibidea:

          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

Itzuli dimentsio bakarreko matrize baten alderantzizkoa.

### Sintaxia:

          SF_Array.Reverse(Array_1D As Variant) As Variant

### Parametroak:

Array_1D : Alderantzikatuko den matrizea.

### Adibidea:

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

## Shuffle

Itzuli dimentsio bakarreko matrize baten ausazko permutazio bat.

### Sintaxia:

          SF_Array.Shuffle(Array_1D As Variant) As Variant

### Parametroak:

Array_1D : Nahastuko den matrizea.

### Adibidea:

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

## Slice

Itzuli dimentsio bakarreko matrize baten azpimultzo bat.

### Sintaxia:

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

### Parametroak:

Array_1D : Zatituko den matrizea.

From : Erauziko den azpimatrizearen indizerik baxuena (From barne) Array_1D matrizean

UpTo : Erauziko den azpimatrizearen indizerik altuena (UpTo barne) Array_1D matrizean. Balio lehenetsia = Array_1D matrizearen goiko muga. UpTo < From bada, orduan itzuliko den matrizea hutsik egongo da.

### Adibidea:

          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

Ordenatu dimentsio bakarreko matrize bat gorantz edo beherantz. Testu-konparazioetan maiuskulak/minuskulak kontuan hartu daitezke edo ez.
Matrizeak modu homogeneoan beteta egon behar du, alegia, elementuek mota bereko eskalarrak izan behar dute.
Empty eta Null elementuak onartzen dira. Normalean, Empty < Null < beste edozein balio eskalar.

### Sintaxia:

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

### Parametroak:

Array_1D : Ordenatuko den matrizea.

SortOrder : "ASC" (gorantz, lehenetsia) edo "DESC" (beherantz).

CaseSensitive : Kate-konparazioetarako soilik, lehenetsia = False (faltsua.

### Adibidea:

          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

Itzuli bi dimentsioko matrize baten zutabeen permutazio bat, emandako errenkada baten balioen arabera ordenatuta.
Matrizeak modu homogeneoan beteta egon behar du, alegia, elementuek mota bereko eskalarrak izan behar dute.
Empty eta Null elementuak onartzen dira. Normalean, Empty < Null < beste edozein balio eskalar.

### Sintaxia:

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

### Parametroak:

Array_1D: Ordenatuko den matrizea.

RowIndex : Zutabeak ordenatzeko erabiliko den errenkadaren indizea.

SortOrder : "ASC" (gorantz, lehenetsia) edo "DESC" (beherantz).

CaseSensitive : Kate-konparazioetarako soilik, balio lehenetsia = False (faltsua).

### Adibidea:

          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

Itzuli bi dimentsioko matrize baten errenkaden permutazio bat, emandako zutabe baten balioen arabera ordenatuta.
Matrizeak modu homogeneoan beteta egon behar du, alegia, elementuek mota bereko eskalarrak izan behar dute.
Empty eta Null elementuak onartzen dira. Normalean, Empty < Null < beste edozein balio eskalar.

### Sintaxia:

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

### Parametroak:

Array_1D : Ordenatuko den matrizea.

RowIndex : Errenkadak ordenatzeko erabiliko den zutabearen indizea.

SortOrder : "ASC" (gorantz, lehenetsia) edo "DESC" (beherantz).

CaseSensitive : Kate-konparazioetarako soilik, balio lehenetsia = False (faltsua).

### Adibidea:

          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

Errenkadak eta zutabeak trukatzen ditu bi dimentsioko matrize batean.

### Sintaxia:

          SF_Array.Transpose(Array_2D As Variant) As Variant

### Parametroak:

Array_2D : Trukatuko den matrizea.

### Adibidea:

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

## TrimArray

Dimentsio bakarreko matrize batean, kendu Null, Empty eta zero luzerako sarrerak.
Kate motako elementuak LibreOffice Basic Trim() funtzioarekin moztuko dira.

### Sintaxia:

          SF_Array.TrimArray(Array_1D As Variant) As Variant

### Parametroak:

Array_1D : Eskaneatuko den matrizea.

### Adibidea:

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

## Union

Eraiki multzo bat, zeron oinarritutako matrize gisa, sarrerako bi matrizeen batuketa-eragiketa aplikatuta. Emaitza gisa lortutako elementuak bi matrizeetan daudenak dira.
Emaitza gisa lortutako matrizea gorantz ordenatuta egongo dira.
Sarrerako bi matrizeek modu homogeneoan beteta egon behar dute, alegia, elementu guztiek mota bereko eskalarrak izan behar dute. Empty eta Null elementuak debekatuta daude.
Testu-konparazioan maiuskulak/minuskulak kontuan hartu daitezke edo ez.

### Sintaxia:

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

### Parametroak:

Array1_1D : Sarrerako lehen matrizea.

Array2_1D : Sarrerako bigarren matrizea.

CaseSensitive : Matrizeak kateekin beteta badaude soilik, balio lehenetsia = False.

### Adibidea:

          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

Eraiki balio bakarren multzo bat sarrerako matrize batetik eratorrita.
Sarrerako matrizeak modu homogeneoan beteta egon behar du, alegia, elementu guztiek mota bereko eskalarrak izan behar dute. Empty eta Null elementuak debekatuta daude.
Testu-konparazioan maiuskulak/minuskulak kontuan hartu daitezke edo ez.

### Sintaxia:

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

### Parametroak:

Array_1D : Sarrerako matrizea.

CaseSensitive : Matrizeak kateekin beteta badaude soilik, balio lehenetsia = False.

### Adibidea:

          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

Aurrizki gisa azpimarra bat ("_") duten ScriptForge Basic errutina edo identifikatzaile guztiak barneko erabilerarako erreserbatuta daude. Ez daude Basic makroetan erabiltzeko pentsatuta.

Erlazionatutako gaiak

Matrize-funtzioak

Calc funtzioei deitzea

ScriptForge.Dictionary zerbitzua