你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
类型声明
Q# 支持用户定义的类型。 用户定义的类型类似于 F# 中的记录类型;它们是不可变的,但支持 copy-and-update 构造。
用户定义类型
用户定义的类型可以包含命名项和匿名项。
例如,命名空间中的以下声明定义了类型 Complex
,它包含 Real
和 Imaginary
这两个命名项,其类型均为 Double
:
newtype Complex = (Real: Double, Imaginary : Double);
支持命名项和未命名项的任意组合,内部项也可以命名。
例如,类型 Nested
定义为
newtype Nested = (Double, (ItemName : Int, String));
包含类型分别为 Double
和 String
的两个匿名项,以及一个 Int
类型的命名项 ItemName
。
可以通过名称或析构访问包含的项(有关详细信息,请参阅项访问)。 还可以通过 unwrap 运算符访问其中的形状与声明中定义的形状匹配的所有项的元组。
出于两个原因,用户定义的类型非常有用。 首先,只要使用定义类型的库和程序通过项的名称而不是析构来访问项,以后就可以扩展类型来包含更多项,且不会破坏任何库代码。 因此,一般不建议通过析构访问项。
其次,Q# 允许传达对特定数据类型的意图和期望,因为两个用户定义类型的值之间不会自动转换,即使它们的项类型相同。
用户定义的构造函数
用户定义的类型的构造函数由编译器自动生成。 目前无法定义自定义构造函数,不过,将来可能会在语言中添加此功能。