你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

文本

Unit 文本

Unit 类型的唯一现有文本是值 ()

Unit 值通常用作可调用对象的参数,因为不需要传递其他参数或延迟执行。 不需要返回其他值时,它也用作返回值,幺正运算(即支持 Adjoint 和/或 Controlled 仿函数的运算)就是如此。

Int 文本

Int 类型的值文本可以用二进制、八进制、十进制或十六进制表示。 以二进制表示的文字以 0b 为前缀,0o 表示八进制,0x 表示十六进制。 常用的十进制表示形式没有前缀。

表示形式 值文本
二进制 0b101010
八进制 0o52
小数 42
十六进制 0x2a

BigInt 文本

BigInt 类型的值文本始终会添加 L 后缀,并且可以用二进制、八进制、十进制或十六进制表示。 以二进制表示的文字以 0b 为前缀,0o 表示八进制,0x 表示十六进制。 常用的十进制表示形式没有前缀。

表示形式 值文本
二进制 0b101010L
八进制 0o52L
小数 42L
十六进制 0x2aL

Double 文本

Double 类型的值文本可以用标准或科学记数法表示。

表示形式 值文本
标准 0.1973269804
科学记数 1.973269804e-1

如果小数点后没有任何内容,则可以省略点后的数字。 例如,1. 是有效的 Double 文本,并且与 1.0 相同。

Bool 文本

Bool 类型的现有文本是 truefalse

字符串文本

String 类型的值文本是用双引号括起来的 Unicode 字符的任意长度序列。 在字符串内部,反斜杠字符 \ 可用于转义双引号字符,并插入换行符作为 \n,回车符作为 \r,以及制表符作为 \t

下面是有效字符串的示例:

"This is a simple string."
"\"This is a more complex string.\", she said.\n"

Q# 还支持内插字符串。 内插字符串是可以包含任意数量的内插表达式的字符串文本。 这些表达式可以是任意类型。 构造时,将计算表达式的值,并将其 String 表示形式插入到定义文本中的相应位置。 内插是通过在初始引号之前直接附加 $ 特殊字符(它们之间没有任何空格)来实现的。

例如,如果 res 是计算结果为 1 的表达式,则以下 String 文本中的第二个句子显示“结果为 1”:

$"This is an interpolated string. The result was {res}."

Qubit 文本

不存在 Qubit 类型文本,因为量子内存由运行时管理。 因此,Qubit 类型的值只能通过分配获得。

Qubit 类型的值表示一个不透明的标识符,通过该标识符可以寻址量子位,也称为量子比特。 它们支持的唯一运算符是相等比较。 有关 Qubit 数据类型的详细信息,请参阅量子比特

Result 文本

Result 类型的现有文本是 ZeroOne

Result 类型的值表示二进制量子测量的结果。 Zero 表示对 +1 特征空间的投影,One 表示对 -1 特征空间的投影。

Pauli 文本

Pauli 类型的现有文本是 PauliIPauliXPauliYPauliZ

Pauli 类型的值表示四个单量子比特 Pauli 矩阵之一,PauliI 表示标识。 Pauli 类型的值通常用于表示旋转的轴,并指定要测量的基数。

Range 文本

Range 类型的值文本是 start..step..stop 形式的表达式,其中 startstependInt 类型的表达式。 如果步长为 1,则可省略步长。 例如,start..stop 是有效的 Range 文本,并且与 start..1..stop 相同。

Range 类型的值表示一个整数序列,其中序列中的第一个元素是 start,后续元素通过向前一个元素添加 step 来获得,直到传递 stopRange 值包括两端;也就是说,如果 startstop 之间的差值是 step 的倍数,则范围的最后一个元素为 stop。 例如,如果 step 为正且 stop < start,则范围可能为空。

下面是有效 Range 文本的示例:

  • 1..3 是范围 1、2、3。
  • 2..2..5 是范围 2、4。
  • 2..2..6 是范围 2、4、6。
  • 6..-2..2 是范围 6、4、2。
  • 2..-2..1 是范围 2。
  • 2..1 是空范围。

有关详细信息,请参阅上下文表达式

数组字面量

数组文本是零个或多个表达式的序列,用逗号分隔,括在方括号 []中;例如 。 [1,2,3] 所有表达式都必须具有通用基类型,这是数组的项类型。 如果使用 指定 []空数组,则编译器可能需要类型注释来确定表达式的适当类型。

可以使用大小数组表达式创建任意长度的数组。 此类表达式的形式 [expr, size = s]为 ,其中 s 可以是类型 Int 的任何表达式,并且 expr 计算结果为一个值,该值将是数组的项重复 s 次数。 例如, [1.2, size = 3] 创建与 相同的数组 [1.2, 1.2, 1.2]

元组文本

元组文本是一个或多个任何类型的表达式的序列,以逗号分隔,括在 () 圆括号中。 元组的类型包括有关每个项类型的信息。

值文本 类型
("Id", 0, 1.) (String, Int, Double)
(PauliX,(3,1)) (Pauli, (Int, Int))

包含单个项的元组在类型和值上都被视为与项本身相同,这被称为单一实例元组等效性

元组用于将值捆绑到单个值中,以便更轻松地传递它们。 这使得每个可调用对象只接受一个输入并返回一个输出成为可能。

用户定义类型的文本

用户定义类型的值是通过调用其构造函数来构造的。 默认构造函数是在声明类型时自动生成的。 目前不能定义自定义构造函数。

例如,如果 IntPair 有两个 Int 类型的项,则 IntPair(2, 3) 通过调用默认构造函数来创建新实例。

运算和函数文本

可使用 lambda 表达式创建匿名运算和函数。