stringtranslate.com

Elipsis (programación informática)

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 ).

Rangos

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 ).

Directorio principal

En sistemas operativos Windows y Unix, ".." se utiliza para acceder al directorio principal en una ruta .

código incompleto

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 }

Número variable de parámetros

C y C++

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]

Java

A partir de la versión 1.5, Java adoptó esta funcionalidad "varargs". Por ejemplo:

public int func(int num, String... strings)

PHP

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 )  }

Múltiples dimensiones

En Python , la elipsis es una expresión nula que representa el Ellipsissingleton.

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)

Otra semántica

MATLAB

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]

PHP

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 ( ... );

Pitón

En Python, los puntos suspensivos también se pueden utilizar como primer parámetro dentro de la collections.abc.Callableanotación de tipo para indicar cualquier número de argumentos: [13]

de  collections.abc  import  Invocable al  escribir  import  TypeAlias ,  CualquieraVarFunction :  TypeAlias  ​​=  Invocable [ ... ,  Cualquiera ]

Referencias

  1. ^ perlop - perldoc.perl.org
  2. ^ "Perlsyn - Sintaxis de Perl - Navegador Perldoc".
  3. ^ "Operadores".
  4. ^ "Printf - Referencia de C++".
  5. ^ Macros variadas: uso de la colección de compiladores GNU (GCC)
  6. ^ Cambios en el borrador de trabajo para la sincronización del preprocesador C99: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
  7. ^ "Borrador de trabajo, estándar para el lenguaje de programación C++" (PDF) .: 14.5.3 Plantillas variadas
  8. ^ "PHP: RFC: variables".
  9. ^ "Rutinas de indexación - Manual de NumPy v1.22".
  10. ^ "Mathworks.com". Archivado desde el original el 29 de junio de 2011 . Consultado el 14 de abril de 2011 .
  11. ^ Conway, Damián (29 de mayo de 2006) [26 de febrero de 2004]. Muro, Larry (ed.). "Exégesis 7: Formatos". dev.perl.org . 2. Archivado desde el original el 15 de junio de 2011.
  12. ^ "Anuncio de lanzamiento de PHP 8.1.0". php.net . Consultado el 29 de marzo de 2023 .
  13. ^ "mecanografía: compatibilidad con sugerencias de escritura § mecanografía. Invocable". Documentación de Python 3.11.2 . Consultado el 29 de marzo de 2023 .