你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
单位文本
Unit 类型 的唯一现有文本是值 ()。
Unit 值通常用作可调用对象的参数,因为不需要传递其他参数或延迟执行。 当不需要返回其他值(即支持 Adjoint 和/或 Controlled 函数的作)时,它还用作返回值。
Int 文本
Int 类型的值文本 可以用二进制、八进制、十进制或十六进制表示形式表示。 以二进制形式表示的文本以 0b为前缀,八进制 0o 和十六进制 0x。 常用十进制表示形式没有前缀。
| 表示形式 | 值文本 |
|---|---|
| 二进制 | 0b101010 |
| 八进制 | 0o52 |
| 小数 | 42 |
| 十六进制 | 0x2a |
BigInt 文本
BigInt 类型 的值文本始终用 L 后缀,并且可以用二进制、八进制、十进制或十六进制表示形式表示。 以二进制形式表示的文本以 0b为前缀,八进制 0o 和十六进制 0x。 常用十进制表示形式没有前缀。
| 表示形式 | 值文本 |
|---|---|
| 二进制 | 0b101010L |
| 八进制 | 0o52L |
| 小数 | 42L |
| 十六进制 | 0x2aL |
双字面量
Double 类型 的值文本可以用标准表示法或科学表示法表示。
| 表示形式 | 值文本 |
|---|---|
| 标准 | 0.1973269804 |
| 科学记数法 | 1.973269804e-1 |
如果小数点之后没有遵循任何内容,则可以省略小数点后面的数字。 例如,1. 是有效的 Double 文本,与 1.0相同。
布尔文本
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 数据类型的详细信息,请参阅 量子比特。
结果文本
Result 类型 的现有文本 Zero 和 One。
Result 类型的值表示二进制量子度量的结果。
Zero 指示对 +1 特征空间的投影,One 指示投影到 -1 特征空间。
Pauli 文本
Pauli 类型 的现有文本为 PauliI、PauliX、PauliY和 PauliZ。
Pauli 类型的值表示保利矩阵 的四个单量子比特之一,PauliI 表示标识。
Pauli 类型的值通常用于表示旋转轴,并针对要测量的基础进行指定。
范围文本
Range 类型的值文本 是窗体 start..step..stop的表达式,其中 start、step和 end 是类型 Int的表达式。 如果步骤大小为 1,则可能会省略它。 例如,start..stop 是有效的 Range 文本,与 start..1..stop相同。
Range 类型的值表示整数序列,其中序列中的第一个元素是 start的,后续元素是通过向上一个元素添加 step 来获取的,直到传递 stop。
如果 start 和 stop 之间的差异是 step的倍数,则 Range 值在两端都是非独占的,即范围的最后一个元素是 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)) |
包含单个项的元组在类型和值中被视为与项本身相同,这称为 单一元组等效。
元组用于将值捆绑到单个值中,从而使它们更易于传递。 这样一来,每个可调用者都可以只获取一个输入并返回一个输出。
结构类型的文本
使用编译器创建的 new 语句或编译器创建的构造函数时,会分配 结构类型的值。
例如,如果 IntPair 是定义为 struct
struct IntPair {
num1 : Int,
num2 : Int,
}
然后,使用 创建新实例并分配值
let MyPair = new IntPair { num1 = 5, num2 = 7 };
或
let MyPair = IntPair(5, 7);
作和函数文本
可以使用 lambda 表达式创建匿名作和函数。