你当前正在访问 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
类型的现有文本是 true
和 false
。
字符串文本
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
类型的现有文本是 Zero
和 One
。
Result
类型的值表示二进制量子测量的结果。
Zero
表示对 +1 特征空间的投影,One
表示对 -1 特征空间的投影。
Pauli 文本
Pauli
类型的现有文本是 PauliI
、PauliX
、PauliY
和 PauliZ
。
Pauli
类型的值表示四个单量子比特 Pauli 矩阵之一,PauliI
表示标识。
Pauli
类型的值通常用于表示旋转的轴,并指定要测量的基数。
Range 文本
Range
类型的值文本是 start..step..stop
形式的表达式,其中 start
、step
和end
是 Int
类型的表达式。 如果步长为 1,则可省略步长。 例如,start..stop
是有效的 Range
文本,并且与 start..1..stop
相同。
Range
类型的值表示一个整数序列,其中序列中的第一个元素是 start
,后续元素通过向前一个元素添加 step
来获得,直到传递 stop
。
Range
值包括两端;也就是说,如果 start
和 stop
之间的差值是 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 表达式创建匿名运算和函数。