你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
随着量子算法的重点是实现什么,而不是在数据结构方面的问题表示形式,对语言设计采取更强大的功能视角是一个自然的选择。 同时,类型系统是一种强大的机制,可用于程序分析和其他编译时检查,有助于制定可靠的代码。
总的来说,Q# 类型系统相当简明,从某种意义上说,类或接口没有明确的概念,因为一个类或接口可能用来从经典语言,如 C# 或 Java。 我们还采取了一种有点务实的方法,取得了增量进展,使某些构造尚未完全集成到类型系统中。 例如,函数可在表达式中使用,但在类型系统中尚没有表示形式。 相应地,它们当前无法分配或作为参数传递,就像类型参数化可调用对象的案例一样。 我们希望在扩展类型系统方面取得增量进展,并将即时需求与长期计划保持平衡。
可用类型
Q# 中的所有类型都 不可变。
| 类型 | 说明 | 
|---|---|
| Unit | 表示唯一值为 ()的单一实例类型。 | 
| Int | 表示 64 位有符号整数。 值 范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。 | 
| BigInt | 表示任何大小的有符号整数 值。 | 
| Double | 表示双精度 64 位浮点数。 值 范围从 -1.79769313486232e308 到 1.79769313486232e308 以及 NaN(不是数字)。 | 
| Bool | 表示 的布尔值值。 可能的值为 true或false。 | 
| String | 将文本表示为由 UTF-16 代码单元序列组成的 值。 | 
| Qubit | 表示可以寻址虚拟量子内存的不透明标识符。 Qubit类型的值 通过分配实例化。 | 
| Result | 表示使用特征值±1 对量子运算符的特征空间进行投影度量的结果。 可能的 值 为 Zero或One。 | 
| Pauli | 表示单量子位 Pauli 矩阵。 可能的 值 是 PauliI、PauliX、PauliY或PauliZ。 | 
| Range | 表示一个相同间距 Int值的有序序列。 
              值 可以按升序或降序表示序列。 | 
| Array | 表示 值 每个值都包含相同类型的值序列。 | 
| 元 | 表示 值,每个值都包含不同类型的固定数量的项。 包含单个元素的元组等效于它们所包含的元素。 | 
| struct | 表示由不同类型的命名项组成的 用户定义类型。 声明新实例时实例化 值。 | 
| 操作 | 表示一个非确定性 可调用,它采用一个(可能为元组值)输入参数,并返回一个(可能为元组值)输出。 对作 值的调用 可能会产生副作用,即使使用相同的参数调用,输出也可能有所不同。 | 
| 功能 | 表示一个确定性 可调用的,它采用一个(可能为元组值)输入参数并返回一个(可能为元组值)输出。 对函数 值的调用 没有副作用,并且如果输入相同,输出将始终相同。 |