En programación de computadoras , la notación de puntos suspensivos (.. o...) se utiliza para indicar rangos , un número no especificado de argumentos o un directorio principal. La mayoría de los lenguajes de programación requieren que los puntos suspensivos se escriban como una serie de puntos; No se puede utilizar un solo carácter de puntos suspensivos ( Unicode ).
En algunos lenguajes de programación (incluidos Ada , Perl , Ruby , Apache Groovy , Kotlin , Haskell y Pascal ), se utiliza una elipsis abreviada de dos puntos para representar un rango de valores dados dos puntos finales; por ejemplo, para recorrer una lista de números enteros entre 1 y 100 inclusive en Perl:
foreach (1..100)
En Ruby, el ...
operador denota un rango medio abierto, es decir, que incluye el valor inicial pero no el valor final.
En Rust, el ..=
operador indica un rango inclusivo para casos en coincidencias y el ..
operador representa un rango que no incluye el valor final.
Perl y Ruby sobrecargan el operador ".." en contexto escalar como un operador flip-flop : una prueba booleana biestable con estado , aproximadamente equivalente a "verdadero mientras x pero aún no y ", de manera similar al operador "," en sed y AWK . [1]
Los compiladores compatibles con GNU C tienen una extensión del lenguaje C y C++ para permitir rangos de casos en declaraciones de cambio :
cambiar ( u ) { caso 0 ... 0x7F : putchar ( c ); romper ; caso 0x80 ... 0x7FF : putchar ( 0xC0 + c >> 6 ); putchar ( 0x80 + c & 0x3f ); romper ; caso 0x800 ... 0xFFFF : putchar ( 0xE0 + c >> 12 ); putchar ( 0x80 + ( c >> 6 ) & 0x3f ); putchar ( 0x80 + ( c >> 12 ) ); romper ; predeterminado : error ( "¡no es compatible!" ); }
Además, GNU C permite una sintaxis de rango similar para inicializadores designados , disponible solo en lenguaje C:
matriz int [ 10 ] = { [ 0. . .5 ] = 1 };
Delphi / Turbo Pascal / Pascal libre:
var FilteredChars : conjunto de [ #0 .. #32 , #127 , 'a' .. 'z' ] ; var CheckedItems : conjunto de [ 4 , 10 .. 38 , 241 , 58 ] ;
En el Lenguaje de modelado unificado (UML), se utilizan puntos suspensivos de dos caracteres para indicar la cardinalidad variable de una asociación. Por ejemplo, una cardinalidad de 1..* significa que el número de elementos agregados en una asociación puede oscilar entre 1 y infinito (un uso equivalente a Kleene plus ).
En sistemas operativos Windows y Unix, ".." se utiliza para acceder al directorio principal en una ruta .
En Perl [2] y Raku [3] la elipsis de 3 caracteres también se conoce como operador "yada yada yada" y, de manera similar a su significado lingüístico , sirve como "suplente" para el código que se insertará más adelante.
Python3 también permite que los puntos suspensivos de 3 caracteres se utilicen como marcador de posición expresivo para el código que se insertará más adelante.
En Notación de sintaxis abstracta uno (ASN.1), los puntos suspensivos se utilizan como marcador de extensión para indicar la posibilidad de extensiones de tipo en futuras revisiones de una especificación de protocolo. En una restricción de tipo, A ::= INTEGER (0..127, ..., 256..511)
se utiliza una expresión como una elipsis para separar la raíz de la extensión de las adiciones de extensión. La definición del tipo A en el sistema de la versión 1 del formulario A ::= INTEGER (0..127, ...)
y la definición del tipo A en el sistema de la versión 2 del formulario A ::= INTEGER (0..127, ..., 256..511)
constituyen una serie de extensión del mismo tipo A en diferentes versiones de la misma especificación. Los puntos suspensivos también se pueden utilizar en definiciones de tipos compuestos para separar el conjunto de campos que pertenecen a la raíz de extensión del conjunto de campos que constituyen adiciones de extensión. Aquí hay un ejemplo:B ::= SEQUENCE { a INTEGER, b INTEGER, ..., c INTEGER }
En el lenguaje de programación C , se utilizan puntos suspensivos para representar un número variable de parámetros de una función . Por ejemplo:
int printf( const char* format, ... );
[4]La función anterior en C podría llamarse con diferentes tipos y números de parámetros, como por ejemplo:
printf("numbers %i %i %i", 5, 10, 15);
y
printf("input string %s, %f", "another string", 0.5);
C99 introdujo macros con un número variable de argumentos . [5]
C++ 11 incluía el preprocesador C99, [6] y también introdujo plantillas con un número variable de argumentos . [7]
A partir de la versión 1.5, Java adoptó esta funcionalidad "varargs". Por ejemplo:
public int func(int num, String... strings)
PHP 5.6 admite [8] el uso de puntos suspensivos para definir una función explícitamente variada , donde ...
antes de un argumento en una definición de función significa que los argumentos a partir de ese momento se recopilarán en una matriz. Por ejemplo:
función variadic_function ( $a , $b , ... $otro ) { return $otro ; }var_dump ( función_variada ( 1 , 2 , 3 , 4 , 5 ));
Produce esta salida:
matriz ( 3 ) { [ 0 ] => int ( 3 ) [ 1 ] => int ( 4 ) [ 2 ] => int ( 5 ) }
En Python , la elipsis es una expresión nula que representa el Ellipsis
singleton.
Se usa particularmente en NumPy , donde se usan puntos suspensivos para dividir un número arbitrario de dimensiones para una matriz de alta dimensión: [9]
>>> importar numpy como np >>> t = np . aleatorio . rand ( 2 , 3 , 4 , 5 ) >>> t [ ... , 0 ] . forma # seleccione el primer elemento de la última dimensión, copie el resto (2, 3, 4) >>> t [ 0 , ... ] . forma # seleccione el primer elemento de la primera dimensión, copie el resto (3, 4, 5)
En MATLAB , se utilizan puntos suspensivos de tres caracteres para indicar la continuación de la línea , [10] haciendo que la secuencia de líneas
x = [ 1 2 3 ...
4 5 6 ];
semánticamente equivalente a la línea única
x = [ 1 2 3 4 5 6 ];
En Raku se utiliza un carácter de puntos suspensivos (...) Unicode (U+2026) real para que sirva como tipo de marcador en una cadena de formato. [11]
Desde PHP 8.1, se pueden usar puntos suspensivos nulos para crear un cierre a partir de un método invocable o de objeto: [12]
// estilo antiguo: PHP 8.0 y anteriores $foo = [ $this , 'foo' ]; $fn = Cierre :: fromCallable ( 'strlen' ); // nuevo estilo: PHP 8.1 y más reciente $foo = $this -> foo ( ... ); $fn = strlen ( ... );
En Python, los puntos suspensivos también se pueden utilizar como primer parámetro dentro de la collections.abc.Callable
anotación de tipo para indicar cualquier número de argumentos: [13]
de collections.abc import Invocable al escribir import TypeAlias , CualquieraVarFunction : TypeAlias = Invocable [ ... , Cualquiera ]