你当前正在访问 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 表示布尔。 可能的值为 truefalse
String 将文本表示为由 UTF-16 代码单元序列组成的
Qubit 表示可以用于寻址虚拟量子内存的不透明标识符。 Qubit 类型的通过分配实例化。
Result 表示在特征值 ±1 的量子运算符的特征空间上进行投影测量的结果。 可能ZeroOne
Pauli 表示单量子比特泡利矩阵。 可能的PauliIPauliXPauliYPauliZ
Range 表示具有相同间距 Int 的值的有序序列。 可以按升序或降序来表示序列。
Array 表示,每个值都包含一系列相同类型的值。
Tuple 表示,每个值都包含固定数量的不同类型的项。 包含单个元素的元组等效于它们所包含的元素。
用户定义类型 表示由不同类型的命名和匿名项组成的用户定义类型通过调用构造函数来实例化。
Operation 表示一个不确定性的可调用对象,它采用一个(可能是元组值的)输入参数返回一个(可能是元组值的)输出。 调用运算可能会产生副作用,并且即使使用相同的参数调用,每次调用的输出也可能有所不同。
函数 表示一个确定性的可调用对象,它采用一个(可能是元组值的)输入参数返回一个(可能是元组值的)输出。 调用函数不会产生副作用,并且输出在给定相同输入时将始终相同。