你当前正在访问 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 |
表示单量子比特泡利矩阵。 可能的值是 PauliI 、PauliX 、PauliY 或 PauliZ 。 |
Range |
表示具有相同间距 Int 的值的有序序列。
值可以按升序或降序来表示序列。 |
Array | 表示值,每个值都包含一系列相同类型的值。 |
Tuple | 表示值,每个值都包含固定数量的不同类型的项。 包含单个元素的元组等效于它们所包含的元素。 |
用户定义类型 | 表示由不同类型的命名和匿名项组成的用户定义类型。 值通过调用构造函数来实例化。 |
Operation | 表示一个不确定性的可调用对象,它采用一个(可能是元组值的)输入参数返回一个(可能是元组值的)输出。 调用运算值可能会产生副作用,并且即使使用相同的参数调用,每次调用的输出也可能有所不同。 |
函数 | 表示一个确定性的可调用对象,它采用一个(可能是元组值的)输入参数返回一个(可能是元组值的)输出。 调用函数值不会产生副作用,并且输出在给定相同输入时将始终相同。 |