ScriptForge . Array serbisyo

Nagbibigay ng koleksyon ng mga pamamaraan para sa pagmamanipula at pagbabago ng mga array ng isang dimensyon (mga vector) at mga array ng dalawang dimensyon (mga matrice). Kabilang dito ang mga set na operasyon, pag-uuri, pag-import mula at pag-export sa mga text file.

Ang mga array na may higit sa dalawang dimensyon ay hindi maaaring gamitin sa mga pamamaraan sa serbisyong ito, ang tanging pagbubukod ay ang CountDims paraan na tumatanggap ng mga Array na may anumang bilang ng mga sukat.

Ang mga item ng array ay maaaring maglaman ng anumang uri ng halaga, kabilang ang mga (sub)array.

Panawagan sa serbisyo

Bago gamitin ang Array serbisyo ang ScriptForge kailangang i-load ang library gamit ang:


    GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
  

Ang paglo-load sa library ay lilikha ng SF_Array bagay na maaaring gamitin upang tawagan ang mga pamamaraan sa Array serbisyo.

Ipinapakita ng mga sumusunod na snippet ng code ang iba't ibang paraan ng pagtawag sa mga pamamaraan sa Array serbisyo (ang Idugtong paraan ay ginagamit bilang isang halimbawa):


    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

Dahil ang Python ay may built-in na listahan at tuple na suporta, karamihan sa mga pamamaraan sa Array ang serbisyo ay magagamit lamang para sa mga Pangunahing script. Ang tanging exception ay ImportFromCSVFile na sinusuportahan sa parehong Basic at Python.


Listahan ng Mga Paraan sa Serbisyo ng Array

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

Ang unang argumento ng karamihan sa mga pamamaraan ay ang array object na isasaalang-alang. Ito ay palaging ipinapasa sa pamamagitan ng sanggunian at hindi nagbabago. Ang mga pamamaraan tulad ng Append, Prepend, atbp ay nagbabalik ng bagong array object pagkatapos ng kanilang execution.


Append

Idinaragdag ang mga item na nakalista bilang mga argumento sa dulo ng array ng input.

Syntax:

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

Mga Parameter:

array_1d : Ang dati nang array, maaaring walang laman.

arg0, arg1, ... : Mga item na idaragdag sa array_1d .

Halimbawa:


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

AppendColumn

Nagdaragdag ng bagong column sa kanang bahagi ng isang dalawang dimensional na array. Ang resultang array ay may parehong mas mababang mga hangganan tulad ng unang dalawang dimensional na array.

Syntax:

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

Mga Parameter:

array_2d : Ang dati nang array, maaaring walang laman. Kung ang array na iyon ay may isang dimensyon lamang, ito ay itinuturing na unang column ng nagreresultang two-dimensional na array.

hanay : Isang 1-dimensional na array na may kasing dami ng mga item gaya ng mga row array_2d .

Halimbawa:


    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

Magdugtong ng bagong row sa ilalim ng dalawang dimensyon na array. Ang resultang array ay may parehong mas mababang mga hangganan gaya ng unang dalawang dimensyon na array.

Syntax:

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

Mga Parameter:

array_2d : Ang dati nang array, maaaring walang laman. Kung ang array na iyon ay may 1 dimensyon, ito ay itinuturing na unang hilera ng nagreresultang 2 dimensyon na array.

hilera : Isang 1-dimensional na hanay na may kasing dami ng mga item na mayroong mga column array_2d .

Halimbawa:


    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

Suriin kung ang isang array ng isang dimensyon ay naglalaman ng isang tiyak na numero, teksto o petsa. Ang paghahambing ng teksto ay maaaring case-sensitive o hindi.
Ang mga pinagsunod-sunod na array ng input ay dapat na punan ng homogenous, ibig sabihin ang lahat ng mga item ay dapat na mga scalar ng parehong uri ( Walang laman at Null mga bagay ay ipinagbabawal).
Ang resulta ng pamamaraan ay hindi mahuhulaan kapag ang array ay inihayag bilang pinagsunod-sunod at sa katotohanan ay hindi.
Ang isang binary na paghahanap ay ginagawa kapag ang array ay pinagsunod-sunod, kung hindi, ito ay ini-scan lamang mula sa itaas hanggang sa ibaba at Walang laman at Null hindi pinapansin ang mga item.

Syntax:

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

Mga Parameter:

array_1d : Ang array na i-scan.

mahanap : Isang numero, petsa o string na hahanapin.

casesensitive : Para lamang sa mga paghahambing ng string (Default = Mali ).

pagkakasunud-sunod : Ito ay maaaring alinman sa "ASC", "DESC" o "" (hindi pinagsunod-sunod). Ang default na halaga ay "".

Halimbawa:


    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

I-imbak ang nilalaman ng isang 2-column array sa isang ScriptForge.Diksyunaryo bagay.
Ang susi ay makukuha mula sa unang column, ang item mula sa pangalawa.

Syntax:

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

Mga Parameter:

array_2d : Data na iko-convert sa a ScriptForge.Diksyunaryo bagay.

Halimbawa:


    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

Gumagawa ng kopya ng 1D o 2D array.

Syntax:

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

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

Mga Parameter:

array_nd : Ang 1D o 2D array na kokopyahin.

Halimbawa:

Isang simpleng takdang-aralin ng isang Array Kokopyahin ng object ang reference nito sa halip na lumikha ng kopya ng mga nilalaman ng object. Tingnan ang halimbawa sa ibaba:


    Dim a as Variant, b as Variant
    a = Array(1, 2, 3)
    ' Ang pagtatalaga sa ibaba ay ginawa sa pamamagitan ng sanggunian
    b = a
    ' Kaya't ang pagbabago ng mga halaga sa "b" ay babaguhin din ang "a"
    b(0) = 10
    MsgBox a(0) ' 10
  

Sa pamamagitan ng paggamit ng Kopyahin paraan, isang kopya ng kabuuan Array bagay ay ginawa. Sa halimbawa sa ibaba, a at b ay iba't ibang mga bagay at nagbabago ng mga halaga sa b hindi makakaapekto sa mga halaga sa a .


    Dim a as Variant, b as Variant
    a = Array(1, 2, 3)
    ' Lumilikha ng kopya ng "a" gamit ang paraan ng "Kopyahin".
    b = SF_Array.Copy(a)
    b(0) = 10
    MsgBox a(0) ' 1
  

CountDims

Bilangin ang bilang ng mga sukat ng isang array. Ang resulta ay maaaring higit sa dalawa.
Kung ang argument ay hindi isang array, nagbabalik -1
Kung ang array ay hindi nasimulan, nagbabalik ng 0.

Syntax:

svc.CountDims(array_nd: any): int

Mga Parameter:

array_nd : Ang array na susuriin.

Halimbawa:


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

Difference

Bumuo ng set, bilang zero-based na array, sa pamamagitan ng paglalapat ng difference operator sa dalawang input array. Ang mga resultang item ay nagmula sa unang array at hindi mula sa pangalawa.
Ang resultang array ay pinagsunod-sunod sa pataas na pagkakasunud-sunod.
Ang parehong mga array ng input ay dapat na punan ng homogenous, ang kanilang mga item ay dapat na mga scalar ng parehong uri. Walang laman at Null bawal ang mga item.
Maaaring case sensitive o hindi ang paghahambing ng teksto.

Syntax:

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

Mga Parameter:

array1_1d : Isang 1-dimensional na reference array, na ang mga item ay sinusuri para maalis.

array2_1d : Isang 1-dimensional na array, na ang mga item ay ibinabawas mula sa unang input array.

casesensitive : Ang argumentong ito ay naaangkop lamang kung ang mga array ay napupuno ng mga string (Default = Mali ).

Halimbawa:


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

ExportToTextFile

Isulat ang lahat ng mga item ng array nang sunud-sunod sa isang text file. Kung ang file ay mayroon na, ito ay mapapatungan nang walang babala.

Syntax:

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

Mga Parameter:

array_1d : Ang array na ie-export. Dapat itong naglalaman lamang ng mga string.

filename : Ang pangalan ng text file kung saan isusulat ang data. Ang pangalan ay dapat ipahayag ayon sa kasalukuyang FileNaming ari-arian ng SF_FileSystem serbisyo.

encoding : Ang set ng character na dapat gamitin. Gamitin ang isa sa mga pangalang nakalista sa IANA character set . Tandaan na maaaring hindi ipatupad ng LibreOffice ang lahat ng umiiral na set ng character (Default ay "UTF-8").

Halimbawa:


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

ExtractColumn

I-extract mula sa isang two-dimention array ang isang partikular na column bilang bagong array.
Ang baba nito LBound at itaas UBound ang mga hangganan ay kapareho ng sa unang dimensyon ng input array.

Syntax:

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

Mga Parameter:

array_2d : Ang array kung saan i-extract.

columnindex : Ang numero ng column na kukunin - dapat nasa pagitan [LBound, UBound] .

Halimbawa:


    'Gumagawa ng 3x3 matrix: |1, 2, 3|
    '                      |4, 5, 6|
    '                      |7, 8, 9|
    Dim mat as Variant, col as Variant
    mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
    mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
    mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
    'Ina-extract ang ikatlong hanay: |3, 6, 9|
    col = SF_Array.ExtractColumn(mat, 2)
  

ExtractRow

I-extract mula sa isang two-dimention array ang isang partikular na row bilang bagong array.
Ang baba nito LBound at itaas UBound Ang mga hangganan ay kapareho ng sa pangalawang dimensyon ng array ng input.

Syntax:

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

Mga Parameter:

array_2d : Ang array kung saan i-extract.

rowindex : Ang numero ng row na i-extract - dapat nasa pagitan [LBound, UBound] .

Halimbawa:


    'Gumagawa ng 3x3 matrix: |1, 2, 3|
    '                      |4, 5, 6|
    '                      |7, 8, 9|
    Dim mat as Variant, row as Variant
    mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
    mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
    mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
    'Ina-extract ang unang hilera: |1, 2, 3|
    row = SF_Array.ExtractRow(mat, 0)
  

Flatten

I-stack ang lahat ng solong item ng isang array at lahat ng item sa mga subarray nito sa isang bagong array na walang mga subarray. Ang mga walang laman na subarray ay hindi pinapansin at ang mga subarray na may bilang ng mga dimensyon na mas malaki sa isa ay hindi pinatag.

Syntax:

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

Mga Parameter:

array_1d : Ang dati nang array, maaaring walang laman.

Halimbawa:


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

Maaari mong gamitin ang patagin pamamaraan kasama ng iba pang mga pamamaraan tulad ng Idugtong o Prepend upang pagsamahin ang isang hanay ng mga 1D array sa isang solong 1D array.


Halimbawa:

Susunod ay isang halimbawa kung paano ang mga pamamaraan patagin at Idugtong maaaring pagsamahin upang pagsamahin ang tatlong array.


    'Gumagawa ng tatlong array para sa halimbawang ito
    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)
    'Pinagsasama-sama ang tatlong array sa iisang 1D array
    Dim arr as Variant
    arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
    '(1, 2, 3, 4, 5, 6, 7, 8, 9)
  

ImportFromCSVFile

I-import ang data na nilalaman sa isang comma-separated values (CSV) file. Ang kuwit ay maaaring palitan ng anumang karakter.

Ang naaangkop na format ng CSV ay inilalarawan sa IETF Karaniwang Format at Uri ng MIME para sa CSV Files .

Ang bawat linya sa file ay naglalaman ng isang buong tala (hindi pinapayagan ang paghahati ng linya).
Gayunpaman mga pagkakasunud-sunod tulad ng \n , \t , ... ay hindi nagbabago. Gamitin SF_String .Unescape() na paraan upang pamahalaan ang mga ito.

Ang pamamaraan ay nagbabalik ng dalawang dimensyon na array na ang mga hilera ay tumutugma sa isang talaang nabasa sa file at ang mga column ay tumutugma sa isang field ng talaan. Walang ginawang pagsusuri tungkol sa pagkakaugnay ng mga uri ng field sa mga column. Ang isang pinakamahusay na hula ay gagawin upang matukoy ang mga uri ng numero at petsa.

Kung ang isang linya ay naglalaman ng mas kaunti o higit pang mga patlang kaysa sa unang linya sa file, isang pagbubukod ay itataas. Ang mga walang laman na linya gayunpaman ay binabalewala lang. Kung ang laki ng file ay lumampas sa bilang ng mga limitasyon ng mga item (tingnan sa loob ng code), isang babala ang itataas at ang array ay pinutol.

Syntax:

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

Mga Parameter:

filename : Ang pangalan ng text file na naglalaman ng data. Ang pangalan ay dapat ipahayag ayon sa kasalukuyang FileNaming ari-arian ng SF_FileSystem serbisyo.

delimiter : Isang character, kadalasan, isang kuwit, isang tuldok-kuwit o isang TAB na character (Default = ",").

dateformat : Isang espesyal na mekanismo ang humahawak sa mga petsa kung kailan dateformat ay alinman sa "YYYY-MM-DD", "DD-MM-YYYY" o "MM-DD-YYYY". Ang gitling (-) ay maaaring mapalitan ng isang tuldok (.), isang slash (/) o isang puwang. Ang iba pang mga format ng petsa ay hindi papansinin. Ang mga petsang nagde-default sa isang walang laman na string na "" ay itinuturing na normal na teksto.

Halimbawa:

Isaalang-alang ang CSV file na "myFile.csv" na may mga sumusunod na nilalaman:

Pangalan, Petsa ng Kapanganakan, Address, Lungsod

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

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

Binabasa ng mga halimbawa sa ibaba sa Basic at Python ang mga nilalaman ng CSV file sa isang Array bagay.

Sa Basic

    Dim arr As Variant
    arr = SF_Array.ImportFromCSVFile("C:\Temp\myFile.csv", DateFormat := "YYYY/MM/DD")
    MsgBox arr(0, 3) ' Lungsod
    MsgBox arr(1, 2) ' Rue de l'église, 21
    MsgBox arr(1, 3) ' Toulouse
  
Sa Python

    from scriptforge import CreateScriptService
    svc = CreateScriptService("Array")
    bas = CreateScriptService("Basic")
    arr = svc.ImportFromCSVFile(r"C:\Temp\myFile.csv", dateformat = "YYYY/MM/DD")
    bas.MsgBox(arr[0][3]) # Lungsod
    bas.MsgBox(arr[1][2]) # Rue de l'église, 21
    bas.MsgBox(arr[1][3]) # Toulouse
  

IndexOf

Tumingin sa isang array ng isang dimensyon para sa isang numero, isang string o isang petsa. Maaaring case-sensitive o hindi ang paghahambing ng teksto.
Kung ang array ay pinagsunod-sunod dapat itong punan ng homogenous, na nangangahulugan na ang lahat ng mga item ay dapat na mga scalar ng parehong uri ( Walang laman at Null ang mga bagay ay ipinagbabawal).
Ang resulta ng pamamaraan ay hindi mahuhulaan kapag ang array ay inihayag bilang pinagsunod-sunod at talagang hindi.
Ang isang binary na paghahanap ay isinasagawa sa mga pinagsunod-sunod na array. Kung hindi, ang mga array ay ini-scan lamang mula sa itaas hanggang sa ibaba at Walang laman at Null hindi pinapansin ang mga item.

Ang pamamaraan ay nagbabalik LBound(input array) - 1 kung hindi matagumpay ang paghahanap.

Syntax:

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

Mga Parameter:

array_1d : Ang array na i-scan.

mahanap : Isang numero, petsa o string na hahanapin.

casesensitive : Para lamang sa mga paghahambing ng string (Default = Mali ).

pagkakasunud-sunod : Ito ay maaaring alinman sa "ASC", "DESC" o "" (hindi pinagsunod-sunod). Ang default na halaga ay "".

Halimbawa:


    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

Ipasok bago ang isang ibinigay na index ng input array ang mga item na nakalista bilang mga argumento.
Ang mga argumento ay bulag na ipinapasok. Ang bawat isa sa kanila ay maaaring alinman sa isang scalar ng anumang uri o isang subarray.

Syntax:

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

Mga Parameter:

array_1d : Ang dati nang array, maaaring walang laman.

dati : Ang index bago ipasok; dapat nasa pagitan [LBound, UBound + 1] .

arg0, arg1, ... : Mga bagay na ipapasok sa array_1d .

Halimbawa:


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

InsertSorted

Ipinapasok sa isang pinagsunod-sunod na array ang isang bagong item sa lugar nito.
Ang array ay dapat na punan ng homogenous, ibig sabihin, ang lahat ng mga item ay dapat na mga scalar ng parehong uri.
Walang laman at Null bawal ang mga item.

Syntax:

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

Mga Parameter:

array_1d : Ang array kung saan ilalagay ang value.

aytem : Ang scalar value na ilalagay, ng parehong uri ng umiiral na array item.

pagkakasunud-sunod : Maaari itong maging "ASC" (default) o "DESC".

casesensitive : Para lamang sa mga paghahambing ng string (Default = Mali ).

Halimbawa:


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

Intersection

Bumuo ng set, bilang zero-based array, sa pamamagitan ng paglalapat ng intersection set operator sa dalawang input array. Ang mga nagreresultang item ay nakapaloob sa parehong mga array.
Ang resultang array ay pinagsunod-sunod sa pataas na pagkakasunud-sunod.
Ang parehong mga array ng input ay dapat na punan ng homogenous, sa madaling salita ang lahat ng mga item ay dapat na mga scalar ng parehong uri. Walang laman at Null bawal ang mga item.
Maaaring case sensitive o hindi ang paghahambing ng teksto.

Syntax:

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

Mga Parameter:

array1_1d : Ang unang input array.

array2_1d : Ang pangalawang input array.

casesensitive : Nalalapat sa mga array na puno ng mga text item (Default = Mali ).

Halimbawa:


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

Join2D

Sumali sa isang two-dimensional array na may dalawang delimiter, isa para sa mga column, isa para sa mga row.

Syntax:

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

Mga Parameter:

array_2d : Ang bawat item ay dapat na alinman sa teksto, isang numero, isang petsa o isang boolean.
Ang mga petsa ay ginawang YYYY-MM-DD na hh:mm:ss na format.
Ang mga di-wastong item ay pinapalitan ng isang zero-length na string.

columndelimiter : Nililimitahan ang bawat column (default = Tab/Chr(9)).

rowdelimiter : Nililimitahan ang bawat hilera (default = LineFeed/Chr(10))

quote : Kung totoo , protektahan ang mga string na may double quotes. Ang default ay Mali .

Halimbawa:


    ' 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

Prepend sa simula ng input array ang mga item na nakalista bilang mga argumento.

Syntax:

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

Mga Parameter:

array_1d : Ang dati nang array, maaaring walang laman.

arg0, arg1, ... : Isang listahan ng mga item na ihahanda array_1d .

Halimbawa:


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

PrependColumn

Mag-prepend sa kaliwang bahagi ng dalawang dimensyon na array ng isang bagong column. Ang resultang array ay may parehong mas mababang mga hangganan gaya ng unang dalawang dimensyon na array.

Syntax:

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

Mga Parameter:

array_2d : Ang dati nang array, maaaring walang laman. Kung ang array na iyon ay may 1 dimensyon, ito ay itinuturing na huling column ng nagreresultang 2 dimensyon na array.

hanay : Isang 1-dimensional na array na may kasing dami ng mga item gaya ng mga row array_2d .

Halimbawa:


    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

Mag-prepend ng bagong row sa simula ng isang 2-dimensional na array. Ang resultang array ay may parehong mas mababang mga hangganan gaya ng paunang 2-dimensional array.

Syntax:

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

Mga Parameter:

array_2d : Ang dati nang array, maaaring walang laman. Kung may 1 dimensyon ang array na iyon, ituturing itong huling row ng nagreresultang 2-dimensional na array.

hilera : Isang 1-dimensional na array na naglalaman ng kasing dami ng mga item gaya ng mga column array_2d .

Halimbawa:


    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

Magsimula ng bagong zero-based na array na may mga numeric na halaga.

Syntax:

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

Mga Parameter:

mula sa : Halaga ng unang item.

hanggang sa : Ang huling item ay hindi dapat lumampas Hanggang sa .

bystep : Ang pagkakaiba sa pagitan ng dalawang magkasunod na item (Default = 1).

Halimbawa:


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

Reverse

Ibalik ang baligtad na isang dimensyon na input array.

Syntax:

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

Mga Parameter:

array_1d : Ang array na i-reverse.

Halimbawa:


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

Shuffle

Nagbabalik ng random na permutation ng isang one-dimensional array.

Syntax:

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

Mga Parameter:

array_1d : Ang array na i-shuffle.

Halimbawa:


    Dim a As Variant
    a = SF_Array.Shuffle(Array(1, 2, 3, 4))
        ' Ang array "a" ay nasa random na pagkakasunud-sunod na ngayon, f.i. (2, 3, 1, 4)
  

Slice

Nagbabalik ng subset ng isang one-dimensional na array.

Syntax:

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

Mga Parameter:

array_1d : Ang array na hiwain.

mula sa : Ang mas mababang index sa array_1d ng subarray upang kunin ( mula sa kasama)

hanggang sa : Ang itaas na index sa array_1d ng subarray upang kunin ( hanggang sa kasama). Ang default na halaga ay ang itaas na hangganan ng array_1d . Kung hanggang sa < mula sa pagkatapos ang ibinalik na array ay walang laman.

Halimbawa:


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

Sort

Pagbukud-bukurin ang isang array ng isang dimensyon sa pataas o pababang pagkakasunud-sunod. Ang mga paghahambing ng teksto ay maaaring case-sensitive o hindi.
Ang array ay dapat na punan ng homogenous, na nangangahulugan na ang mga item ay dapat na mga scalar ng parehong uri.
Walang laman at Null pinapayagan ang mga item. Conventionally Walang laman < Null < anumang iba pang scalar value.

Syntax:

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

Mga Parameter:

array_1d : Ang array upang ayusin.

pagkakasunud-sunod : Maaari itong maging "ASC" (default) o "DESC".

casesensitive : Para lamang sa mga paghahambing ng string (Default = Mali ).

Halimbawa:


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

SortColumns

Magbalik ng permutation ng mga column ng dalawang dimensyon na array, na pinagsunod-sunod sa mga value ng isang partikular na row.
Ang hilera ay dapat na punan ng homogenous, na nangangahulugan na ang lahat ng mga item ay dapat na mga scalar ng parehong uri.
Walang laman at Null pinapayagan ang mga item. Conventionally Walang laman < Null < anumang iba pang scalar value.

Syntax:

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

Mga Parameter:

array_2d : Ang 2-dimensional na array upang pagbukud-bukurin.

rowindex : Ang index ng row na gagamitin bilang reference para pagbukud-bukurin ang mga column.

pagkakasunud-sunod : Maaari itong maging "ASC" (default) o "DESC".

casesensitive : Para lamang sa mga paghahambing ng string (Default = Mali ).

Halimbawa:


    ' 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

Magbalik ng permutation ng mga row ng dalawang dimensyon na array, na pinagsunod-sunod sa mga value ng isang partikular na column.
Ang haligi ay dapat na punan ng homogenous, samakatuwid ang lahat ng mga item ay dapat na mga scalar ng parehong uri.
Walang laman at Null pinapayagan ang mga item. Conventionally Walang laman < Null < anumang iba pang scalar value.

Syntax:

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

Mga Parameter:

array_2d : Ang array upang ayusin.

columnindex : Ang index ng column na gagamitin bilang reference para pag-uri-uriin ang mga row.

pagkakasunud-sunod : Maaari itong maging "ASC" (default) o "DESC".

casesensitive : Para lamang sa mga paghahambing ng string (Default = Mali ).

Halimbawa:


    ' 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

Pinapalitan ang mga row at column sa isang two-dimensional na array.

Syntax:

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

Mga Parameter:

array_2d : Ang 2-dimensional na array upang i-transpose.

Halimbawa:


    ' 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

Alisin mula sa isang array ng isang dimensyon lahat Null , Walang laman at zero-length na mga entry.
Ang mga string na item ay pinuputol gamit ang LibreOffice Basic Trim() function.

Syntax:

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

Mga Parameter:

array_1d : Ang array upang putulin.

Halimbawa:


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

Union

Bumubuo ng set, bilang zero-based na array, sa pamamagitan ng paglalapat ng unyon operator sa dalawang input array. Ang mga nagreresultang item ay nagmula sa alinman sa parehong mga array.
Ang resultang array ay pinagsunod-sunod sa pataas na pagkakasunud-sunod.
Ang parehong mga array ng input ay dapat na punan ng homogenous, ang kanilang mga item ay dapat na mga scalar ng parehong uri. Walang laman at Null bawal ang mga item.
Maaaring case sensitive o hindi ang paghahambing ng teksto.

Syntax:

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

Mga Parameter:

array1_1d : Ang unang input array.

array2_1d : Ang pangalawang input array.

casesensitive : Naaangkop lamang kung ang mga array ay puno ng mga string (Default = Mali ).

Halimbawa:


    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

Bumuo ng isang hanay ng mga natatanging value na nagmula sa input array.
Ang input array ay dapat na punan ng homogenous, ang mga item nito ay dapat na mga scalar ng parehong uri. Walang laman at Null bawal ang mga item.
Maaaring case sensitive o hindi ang paghahambing ng teksto.

Syntax:

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

Mga Parameter:

array_1d : Ang input array.

casesensitive : Naaangkop lamang kung ang array ay puno ng mga string (Default = Mali ).

Halimbawa:


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

Lahat ScriptForge Ang mga pangunahing gawain o identifier na may prefix na may underscore na character na "_" ay nakalaan para sa panloob na paggamit. Ang mga ito ay hindi nilalayong gamitin sa Basic macros o Python script.


Mangyaring suportahan kami!