省略号 (计算机编程)

在计算机编程中，省略号表示法(.. 或 ...)用于表示、未指定个数的实参、或者父文件夹。编程语言一般要求省略号写为一系列的句点；不能写为单个的Unicode省略号字符。

范围 
一些编程语言 (如Ada、Perl、Ruby、Groovy、Kotlin、Haskell、Pascal)，2个句点作为省略号，用于表示给定两端数值的一个范围。例如，Perl语言的在1至100的整型列表（list）上迭代：foreach (1..100)

Ruby语言的...运算符表示左闭右开范围。

Rust语言的..=运算符包含边界值；而..运算符不包含边界值。

C#语言从8.0版本开始支持数组下标访问使用..运算符表示左闭右开范围。例如：
int[] numbers = new[] { 0, 10, 20, 30, 40, 50 };
int start = 1;
int amountToTake = 3;
int[] subset = numbers[start..(start + amountToTake)];
Display(subset);  // output: 10 20 30

//省略部分操作数的写法，其中的 ^ 运算符是C# 8.0版本引入的从尾端计数：
// a.. is equivalent to a..^0  
// ..b is equivalent to 0..b
//  .. is equivalent to 0..^0

Perl与Ruby运算符重载了".."用于标量上下文，这称为翻转运算符 -  有的双稳布尔测试，类似于Sed和AWK中的","运算符。

GNU C编译器提供的C和C++语言编译扩展允许在中的case ranges:
switch(u) {
  case     0 ...   0x7F : putchar(c); break;
  case  0x80 ...  0x7FF : putchar(0xC0 + c>>6);  putchar( 0x80 + c&0x3f); break;
  case 0x800 ... 0xFFFF : putchar(0xE0 + c>>12); putchar( 0x80 + (c>>6)&0x3f); putchar( 0x80 + (c>>12) ); break;
  default: error("not supported!");
}
GNU C编译器还允许类似的C语言扩展：
int array[10] = { [0...5] = 1 };

Delphi / Turbo Pascal / Free Pascal:
var FilteredChars: set of [#0..#32,#127,'a'..'z'];
var CheckedItems: set of [4,10..38,241,58];

Unified Modeling Language (UML)，2个字符的省略号被用于指出关联（association）的可变基数（cardinality）。例如1..*表示从1个到无穷个（等价于克莱尼星号的用法）。

父文件夹
Windows和类Unix操作系统把".."用作在文件路径中访问父文件夹。

不完整的代码 
Perl语言和Raku语言中，3字符的省略号也称作"yada yada yada"运算符，语义上表示代码将插入此处。

Python3也允许3字符省略号作为以后插入代码的占位符。

可变数量参数

C和C++
C语言的可變參數函數的参数表中，3字符省略号表示更多的不能显式列出的参数。例如：

上述函数可用不同数据类型和个数的实参来对应。例如：

和

C99引入了variable number of arguments。

C++11包含了C99预处理器，并引入了variable number of arguments.

Java

从版本1.5开始，Java语言支持了"varargs"功能。例如：

PHP

PHP 5.6支持使用省略号定义显式的可變參數函數，其中参数前面的...表示从这个位置开始参数组成一个数组。例如： 

function variadic_function($a, $b, ...$other)
{
    return $other;
}

var_dump(variadic_function(1, 2, 3, 4, 5));

输出结果为：
  array(3) {
    [0]=>
    int(3)
    [1]=>
    int(4)
    [2]=>
    int(5)
  }

多维
Python语言中，特别市NumPy，省略号用于从一个高维数组剪切出任意维度：

>>> import numpy as np
>>> t = np.random.rand(2, 3, 4, 5)
>>> t[..., 0].shape # 从最后一维选出第一个元素，其他维度照搬
(2, 3, 4)
>>> t[0, ...].shape # 从第一维选出第一个元素，其他维度照搬
(3, 4, 5)

其他语义 
MATLAB中，三字符省略号用于指出“续行”：
x = [ 1 2 3 ...4 5 6 ];
语义上等价于：
x = [ 1 2 3 4 5 6 ];

参考文献

运算符_(编程)