Contenido

# Servicio ScriptForge.Array

Facilita una colección de métodos para manipular y transformar formaciones de una dimensión (vectores) y de dos (matrices). La colección incluye operaciones de conjunto, ordenación, importación y exportación a partir de archivos de texto.

Las matrices con más de dos dimensiones no pueden utilizarse con los métodos de este servicio, siendo la única excepción el método CountDims, que acepta matrices con cualquier número de dimensiones.

Los elementos en las matrices pueden contener cualquier tipo de valor, incluidas (sub)matrices.

## Invocación del servicio

Antes de utilizar el servicio Array, se debe cargar la biblioteca ScriptForge mediante:

        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

La carga de la biblioteca creará el objeto SF_Array, que puede utilizarse para llamar a los métodos del servicio Array.

Los siguientes fragmentos de código muestran las diversas formas de llamar a los métodos en el servicio Array (el método Append se usa como ejemplo):

        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)

Debido a que Python incorpora compatibilidad para listas y tuplas, la mayoría de los métodos en el servicio Array están disponibles solo para secuencias BASIC. La única excepción es ImportFromCSVFile, que se admite tanto en BASIC como en Python.

Lista de métodos en el servicio 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

El primer argumento de la mayoría de los métodos es el objeto de matriz a considerar. Siempre se pasa por referencia y se deja sin cambios. Métodos como Append, Prepend, etc. devuelven un nuevo objeto de matriz después de su ejecución.

## Append

Agrega los elementos enumerados como argumentos al final de la matriz de entrada.

### Sintaxis:

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

### Parámetros:

array_1d: La matriz preexistente puede estar vacía.

arg0, arg1…: elementos que se añadirán a array_1d.

### Ejemplo:

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

## AppendColumn

Agrega una columna nueva a la derecha de una matriz bidimensional. La matriz resultante tiene los mismos límites inferiores que la matriz bidimensional inicial.

### Sintaxis:

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

### Parámetros:

array_2d: la matriz preexistente puede estar vacía. Si esa matriz tiene solo una dimensión, se considera como la primera columna de la matriz bidimensional resultante.

column: una matriz unidimensional con la misma cantidad de elementos que las filas que hay en array_2d.

### Ejemplo:

        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

Añade una fila nueva a la parte inferior de una matriz bidimensional. La matriz resultante tiene los mismos límites inferiores que la matriz bidimensional inicial.

### Sintaxis:

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

### Parámetros:

array_2d: la matriz preexistente puede estar vacía. Si esa matriz tiene una dimensión, se considera como la primera fila de la matriz bidimensional resultante.

row: una matriz unidimensional con un elemento por cada columna en array_2d.

### Ejemplo:

        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

Compruebe si una matriz de una dimensión contiene un determinado número, texto o fecha. La comparación de texto puede distinguir entre mayúsculas y minúsculas o no.
Las matrices de entrada ordenadas deben llenarse de manera homogénea, lo que significa que todos los elementos deben ser escalares del mismo tipo (los elementos Vacio y Nulo están prohibidos).
El resultado del método es impredecible cuando la matriz se anuncia como ordenada y en realidad no lo es.
Se realiza una búsqueda binaria cuando se ordena la matriz; de lo contrario, simplemente se escanea de arriba a abajo y se ignoran los elementos Vacio y Nulo.

### Sintaxis:

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

### Parámetros:

array_1d: la matriz que se utilizará en la búsqueda.

tofind: un número, una fecha o una cadena para buscar.

distingue mayúsculas y minúsculas: solo para comparaciones de cadenas (predeterminado =Falso

sortorder: puede ser «ASC», «DESC» o «» (sin ordenar). El valor predeterminado es «».

### Ejemplo:

        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

Almacena el contenido de una matriz de dos columnas en un objeto ScriptForge.Dictionary.
La clave se extraerá de la primera columna; el elemento, de la segunda.

### Sintaxis:

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

### Parámetros:

array_2d: los datos que se convertirán en un objeto ScriptForge.Dictionary.

- La primera columna debe contener exclusivamente cadenas con una longitud superior a cero, en cualquier orden. Estos valores se utilizarán como etiquetas en el diccionario.

- La segunda columna contiene los datos que se asociarán a la etiqueta correspondiente en el diccionario.

### Ejemplo:

        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

Crea una copia de una matriz 1D o 2D.

### Sintaxis:

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

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

### Parámetros:

matriz_nd: La matriz 1D o 2D que se copiará.

### Ejemplo:

Una simple asignación de un objeto Array copiará su referencia en lugar de crear una copia del contenido del objeto. Vea el ejemplo a continuación:

        Dim a as Variant, b as Variant
        a = Array(1, 2, 3)
        ' La asignación siguiente se hace por referencia
        b = a
        ' Por lo tanto, si se cambian los valores en «b» también cambiará «a»
        b(0) = 10
        MsgBox a(0) ' 10

Al usar elCopiarmétodo, una copia de la totalidadmatrizse hace el objeto. En el siguiente ejemplo,aybson objetos diferentes y valores cambiantes enbno afectará los valores ena

        Dim a as Variant, b as Variant
        a = Array(1, 2, 3)
        ' Crea una copia de «a» usando el método «Copy»
        b = SF_Array.Copy(a)
        b(0) = 10
        MsgBox a(0) ' 1

## CountDims

Cuente el número de dimensiones de una matriz. El resultado puede ser mayor que dos.
Si el argumento no es una matriz, devuelve -1
Si la matriz no está inicializada, devuelve 0.

### Sintaxis:

svc.CountDims(array_nd: any): int

### Parámetros:

matriz_nd: La matriz a examinar.

### Ejemplo:

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

## Difference

Cree un conjunto, como una matriz de base cero, aplicando el operador de diferencia en las dos matrices de entrada. Los elementos resultantes se originan en la primera matriz y no en la segunda.
La matriz resultante se ordena en orden ascendente.
Ambas matrices de entrada deben llenarse de manera homogénea, sus elementos deben ser escalares del mismo tipo. Los elementos Vacío y Nulo están prohibidos.
La comparación de texto puede distinguir entre mayúsculas y minúsculas o no.

### Sintaxis:

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

### Parámetros:

matriz_id: Una matriz de referencia unidimensional, cuyos elementos se examinan para eliminarlos.

matriz2_1d: Una matriz unidimensional, cuyos elementos se restan de la primera matriz de entrada.

distingue mayúsculas y minúsculas: este argumento solo es aplicable si las matrices se completan con cadenas (Predeterminado = Falso).

### Ejemplo:

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

## ExportToTextFile

Escriba todos los elementos de la matriz secuencialmente en un archivo de texto. Si el archivo ya existe, se sobrescribirá sin previo aviso.

### Sintaxis:

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

### Parámetros:

matriz_1d: La matriz a exportar. Debe contener solo cadenas.

Nombre del archivo: El nombre del archivo de texto donde se escribirán los datos. El nombre debe expresarse de acuerdo con la actualNombre de archivopropiedad de laSistema de archivos FSServicio.

codificación: El conjunto de caracteres que se debe utilizar. Utilice uno de los nombres enumerados enConjuntos de caracteres de la IANA. Tenga en cuenta que es posible que LibreOffice no implemente todos los conjuntos de caracteres existentes (el valor predeterminado es "UTF-8").

### Ejemplo:

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

## ExtractColumn

Extrae de una matriz de dos dimensiones una columna específica como una matriz nueva.
Los límites inferior, LBound, y superior, UBound, son idénticos a los de la primera dimension de la matriz de entrada.

### Sintaxis:

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

### Parámetros:

matriz_2d: La matriz de la que se extrae.

índice de columna: El número de columna a extraer - debe estar en el intervalo[Límite L, Límite U].

### Ejemplo:

        'Crea una matriz de 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))
        'Extrae la tercera columna: |3, 6, 9|
        col = SF_Array.ExtractColumn(mat, 2)

## ExtractRow

Extraiga de una matriz de dos dimensiones una fila específica como una nueva matriz
Es mas bajoLímite Ly superiorLimite Ulos límites son idénticos a los de la segunda dimensión de la matriz de entrada.

### Sintaxis:

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

### Parámetros:

matriz_2d: La matriz de la que se extrae.

índice de fila: El número de fila a extraer - debe estar en el intervalo[Límite L, Límite U].

### Ejemplo:

        'Crea una matriz de 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))
        'Extrae la primera fila: |1, 2, 3|
        row = SF_Array.ExtractRow(mat, 0)

## Flatten

Apile todos los elementos individuales de una matriz y todos los elementos de sus submatrices en una matriz nueva sin submatrices. Las submatrices vacías se ignoran y aquellas con un número de dimensiones mayor que uno no se aplanan.

### Sintaxis:

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

### Parámetros:

matriz_1d: La matriz preexistente puede estar vacía.

### Ejemplo:

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

Puedes usar elAplanarmétodo junto con otros métodos tales comoAdjuntaroAnteponerpara concatenar un conjunto de arreglos 1D en un solo arreglo 1D.

### Ejemplo:

El siguiente es un ejemplo de cómo los métodosAplanaryAdjuntarse pueden combinar para concatenar tres matrices.

        Crea tres matrices para este ejemplo.
        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)
        'Concatena las tres matrices en una sola matriz unidimensional
        Dim arr as Variant
        arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
        '(1, 2, 3, 4, 5, 6, 7, 8, 9)

## ImportFromCSVFile

Importe los datos contenidos en un archivo de valores separados por comas (CSV). La coma puede reemplazarse por cualquier carácter.

El formato CSV aplicable se describe en la página Formato común y tipo MIME para archivos CSV del IETF (en inglés).

Cada línea del archivo contiene un registro completo (no se permite la división de líneas).
Sin embargo, secuencias como\n,\t,...se dejan sin cambios. UsarSF_CadenaMétodo Un escape () para gestionarlos.

El método devuelve una matriz de dos dimensiones cuyas filas corresponden a un solo registro leído en el archivo y cuyas columnas corresponden a un campo del registro. No se comprueba la coherencia de los tipos de campo en las columnas. Se hará una mejor conjetura para identificar los tipos numéricos y de fecha.

Si una línea contiene menos o más campos que la primera línea del archivo, se generará una excepción. Sin embargo, las líneas vacías simplemente se ignoran. Si el tamaño del archivo supera el límite de número de elementos (consulte el interior del código), se genera una advertencia y la matriz se trunca.

### Sintaxis:

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

### Parámetros:

Nombre del archivo:El nombre del archivo de texto que contiene los datos. El nombre debe expresarse de acuerdo con la actualnombre de archivopropiedad de laSistema de archivos FSServicio.

delimitador: Un solo carácter, por lo general, una coma, un punto y coma o un carácter TABULADOR (Predeterminado = ",").

dateformat: un mecanismo especial manipula las fechas cuando el valor de dateformat es «AAAA-MM-DD», «DD-MM-AAAA» o «MM-DD-AAAA». El guion (-) puede sustituirse por un punto (.), una barra (/) o un espacio. Se pasarán por alto otros formatos de fecha. Las fechas expresadas como una cadena vacía «» se consideran texto normal.

### Ejemplo:

Considere el archivo CSV "mi archivo .csv" con los siguientes contenidos:

Nombre, fecha de nacimiento, dirección, ciudad

Anna, 31/03/2002, "Calle de la Iglesia, 21", Toulouse

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

Los siguientes ejemplos en Basic y Python leen el contenido del archivo CSV en un objeto Matrizobjeto.

##### En BASIC

        Dim arr As Variant
        arr = SF_matriz. Importar desde archivo CSV ("C:\Temp\myFile.csv", Formato de fecha: = "YYYY/MM/DD")
        MsgBox arr(0, 3) ' Ciudad
        MsgBox arr(1, 2) ' Rue de l'église, 21
        MsgBox arr(1, 3) ' Tolosa

##### En Python

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

## IndexOf

Busca un número, una cadena o una fecha en una matriz unidimensional. La comparación del texto puede o no distinguir entre mayúsculas y minúsculas.
Si la matriz está ordenada, debe llenarse de manera homogénea; esto es, todos los elementos deben ser escalares del mismo tipo (los elementos Empty y Null no están permitidos).
El resultado del método es impredecible si se le pasa una matriz «ordenada» que en realidad no lo está.
Se efectúa una búsqueda binaria en las matrices ordenadas. Si no, simplemente se leen de arriba abajo, ignorando los elementos Empty y Null.
El método devuelve LBound(input array) - 1 si la búsqueda no fue exitosa.

### Sintaxis:

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

### Parámetros:

array_1d: la matriz que se utilizará en la búsqueda.

tofind: un número, una fecha o una cadena para buscar.

distingue mayúsculas y minúsculas: solo para comparaciones de cadenas (predeterminado =falso).

sortorder: puede ser «ASC», «DESC» o «» (sin ordenar). El valor predeterminado es «».

### Ejemplo:

        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

Inserte antes de un índice dado de la matriz de entrada los elementos enumerados como argumentos.
Los argumentos se insertan a ciegas. Cada uno de ellos puede ser un escalar de cualquier tipo o un subarreglo.

### Sintaxis:

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

### Parámetros:

matriz_1d: La matriz preexistente puede estar vacía.

antes de: El índice antes del cual insertar; debe estar en el intervalo[Límite L, Límite U+ 1].

arg0, arg1, ...: elementos que se insertarán enmatriz_1d.

### Ejemplo:

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

## InsertSorted

Inserta en una matriz ordenada un nuevo elemento en su lugar.
La matriz debe llenarse de manera homogénea, lo que significa que todos los elementos deben ser escalares del mismo tipo. Los elementos
Vacío y Nulo están prohibidos.

### Sintaxis:

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

### Parámetros:

matriz_1d:La matriz en la que se insertará el valor.

artículo: el valor escalar que se va a insertar, del mismo tipo que los elementos de matriz existentes.

Orden de clasificación: Puede ser "ASC" (predeterminado) o "DESC".

distingue mayúsculas y minúsculas: solo para comparaciones de cadenas (predeterminado =falso.

### Ejemplo:

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

## Intersection

Cree un conjunto, como una matriz de base cero, aplicando el operador de conjunto de intersección en las dos matrices de entrada. Los elementos resultantes están contenidos en ambas matrices.
La matriz resultante se ordena en orden ascendente.
Ambas matrices de entrada deben llenarse de manera homogénea, en otras palabras, todos los elementos deben ser escalares del mismo tipo. Los elementos Vacío y Nulo están prohibidos.
La comparación de texto puede distinguir entre mayúsculas y minúsculas o no.

### Sintaxis:

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

### Parámetros:

matriz1_1d: La primera matriz de entrada.

matriz2_1d:La segunda matriz de entrada.

distingue mayúsculas y minúsculas: se aplica a las matrices rellenadas con elementos de texto (predeterminado =falso.

### Ejemplo:

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

## Join2D

Únase a una matriz bidimensional con dos delimitadores, uno para las columnas y otro para las filas.

### Sintaxis:

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

### Parámetros:

matriz_2d: Cada elemento debe ser texto, un número, una fecha o un valor booleano.
Las fechas se transforman al formato AAAA-MM-DD hh:mm:ss.
los elementos no válidos se reemplazan por una cadena de longitud cero.

delimitador de columna: delimita cada columna (predeterminado = Tabulador/entero(9)).

delimitador de fila>: delimita cada fila (predeterminado = Linea de alimentación/Entero(10))

quote: si es True, entrecomilla las cadenas. El valor predeterminado es False.

### Ejemplo:

        ' 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

Anteponga al comienzo de la matriz de entrada los elementos enumerados como argumentos.

### Sintaxis:

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

### Parámetros:

matriz_1d: La matriz preexistente puede estar vacía.

arg0, arg1… una lista de elementos para anteponer a array_1d.

### Ejemplo:

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

## PrependColumn

Anteponga al lado izquierdo de una matriz de dos dimensiones una nueva columna. La matriz resultante tiene los mismos límites inferiores que la matriz inicial de dos dimensiones.

### Sintaxis:

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

### Parámetros:

array_2d: La matriz preexistente puede estar vacía. Si esa matriz tiene 1 dimensión, se considera como la última columna de la matriz de 2 dimensiones resultante.

column: una matriz unidimensional con la misma cantidad de elementos que las filas que hay en array_2d.

### Ejemplo:

        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

Anteponga una nueva fila al comienzo de una matriz bidimensional. La matriz resultante tiene los mismos límites inferiores que la matriz bidimensional inicial.

### Sintaxis:

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

### Parámetros:

matriz bidimencional: la matriz preexistente puede estar vacía. Si esa matriz tiene 1 dimensión, se considera como la última fila de la matriz bidimensional resultante.

fila: una matriz unidimensional que contiene tantos elementos como columnas hay en mateiz bidimencional.

### Ejemplo:

        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

Inicialice una nueva matriz de base cero con valores numéricos.

### Sintaxis:

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

### Parámetros:

from: valor del primer elemento.

hasta: El último elemento no debe exceder de Hasta.

bystep: la diferencia entre dos elementos sucesivos (de manera predeterminada es 1).

### Ejemplo:

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

## Reverse

Devuelve la matriz unidimensional de entrada invertida.

### Sintaxis:

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

### Parámetros:

array_1d: la matriz para invertir.

### Ejemplo:

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

## Shuffle

Devuelve una permutación aleatoria de una matriz unidimensional.

### Sintaxis:

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

### Parámetros:

matriz unidimencional: La matriz a barajar.

### Ejemplo:

        Dim a As Variant
        a = SF_Array.Shuffle(Array(1, 2, 3, 4))
            ' La matriz "a" ahora está en orden aleatorio, p.i. (2, 3, 1, 4)

## Slice

Devuelve un subconjunto de una matriz unidimensional.

### Sintaxis:

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

### Parámetros:

matriz unidimencional: La matriz a dividir.

de: el índice inferior en matriz unidimencional del subarreglo a extraer (de incluido)

hasta: El índice superior en matriz unidimencional del subarreglo a extraer (hasta incluido). El valor predeterminado es el límite superior de matriz unidimencional. Si hasta < desde entonces la matriz devuelta está vacía.

### Ejemplo:

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

## Sort

Ordene una matriz de una dimensión en orden ascendente o descendente. Las comparaciones de texto pueden distinguir entre mayúsculas y minúsculas o no.
La matriz debe llenarse de manera homogénea, lo que significa que los elementos deben ser escalares del mismo tipo. Se permiten elementos
Vacío y Nulo. Convencionalmente Vacío < Nulo < cualquier otro valor escalar.

### Sintaxis:

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

### Parámetros:

matriz unidimencional: La matriz a ordenar.

ordenar: puede ser "ASC" (predeterminado) o "DESC".

sensible a mayúsculas y minúsculas: solo para comparaciones de cadenas (Predeterminado = Falso).

### Ejemplo:

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

## SortColumns

Devuelve una permutación de las columnas de una matriz de dos dimensiones, ordenadas según los valores de una fila dada.
La fila debe llenarse de manera homogénea, lo que significa que todos los elementos deben ser escalares del mismo tipo. Se permiten elementos
Vacío y Nulo. Convencionalmente Vacío < Nulo < cualquier otro valor escalar.

### Sintaxis:

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

### Parámetros:

matriz bidimensional: la matriz bidimensional para ordenar.

índice de fila: El índice de la fila que se usará como referencia para ordenar las columnas.

ordenar: puede ser "ASC" (predeterminado) o "DESC".

sensible a mayúsculas y minúsculas: solo para comparaciones de cadenas (Predeterminado = Falso).

### Ejemplo:

        ' 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

Devuelve una permutación de las filas de una matriz de dos dimensiones, ordenada según los valores de una columna determinada.
La columna debe llenarse de manera homogénea, por lo tanto, todos los elementos deben ser escalares del mismo tipo. Se permiten elementos
Vacío y Nulo. Convencionalmente Vacío < Nulo < cualquier otro valor escalar.

### Sintaxis:

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

### Parámetros:

matriz_2d: La matriz a ordenar.

índice de columna: El índice de la columna que se usará como referencia para ordenar las filas.

ordenar: puede ser "ASC" (predeterminado) o "DESC".

sensible a mayúsculas y minúsculas: solo para comparaciones de cadenas (Predeterminado = Falso).

### Ejemplo:

        ' 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

Intercambia filas y columnas en una matriz bidimensional.

### Sintaxis:

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

### Parámetros:

matriz bidimensional: la matriz bidimensional a transponer.

### Ejemplo:

        ' 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

Retira de una matriz de una dimensión todas las entradas Nulo, Vacio y de longitud cero.
Los elementos de cadena se recortan con la función LibreOffice Basic Trim().

### Sintaxis:

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

### Parámetros:

matriz unidimensional: La matriz a recortar.

### Ejemplo:

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

## Union

Construye un conjunto, como una matriz de base cero, aplicando el operador de unión en las dos matrices de entrada. Los elementos resultantes se originan en cualquiera de ambas matrices.
La matriz resultante se ordena en orden ascendente.
Ambas matrices de entrada deben llenarse de manera homogénea, sus elementos deben ser escalares del mismo tipo. Los elementos Vacio y Nulo están prohibidos.
La comparación de texto puede distinguir entre mayúsculas y minúsculas o no.

### Sintaxis:

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

### Parámetros:

matriz1 unidimensional: La primera matriz de entrada.

matriz2 unidimensional: La segunda matriz de entrada.

distingue entre mayúsculas y minúsculas: aplicable solo si las matrices se completan con cadenas (Predeterminado = Falso).

### Ejemplo:

        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

Cree un conjunto de valores únicos derivados de la matriz de entrada.
La matriz de entrada debe llenarse de manera homogénea, sus elementos deben ser escalares del mismo tipo. Los elementos Vacio y Nulo están prohibidos.
La comparación de texto puede distinguir entre mayúsculas y minúsculas o no.

### Sintaxis:

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

### Parámetros:

matriz unidimensional: la matriz de entrada.

distingue entre mayúsculas y minúsculas: Aplicable solo si la matriz se completa con cadenas (Predeterminado = Falso).

### Ejemplo:

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

Todas las rutinas o identificadores BASIC de ScriptForge precedidas por guion bajo «_» están reservadas para uso interno. No deben utilizarse en macros BASIC o secuencias Python.

Temas relacionados

Funciones matriciales

Using Calc Functions in Macros

ScriptForge.Dictionary service