dlang的dmd 2103版本最新关于Variant的用法的说明为This module implements a discriminated union type aka tagged union algebraic type Such types are useful for type-uniform binary interfaces interfacing with scripting
关键信息:
- Variant是一个联合类型,可以持有任何类型的值。
- 可以使用get方法获取Variant对象中的值。
- 可以使用peek方法查询Variant对象当前是否持有某种类型的值。
- 可以使用type方法获取Variant对象当前持有值的TypeInfo。
完整例子:
import std.variant;
void main()
{
Variant v1 = 10;
Variant v2 = "hello";
Variant v3 = [1, 2, 3];
writeln(v1.get!int()); // 输出 10
writeln(v2.get!string()); // 输出 "hello"
writeln(v3.get!(int[])); // 输出 [1, 2, 3]
if (v1.peek!string()) {
writeln("v1 is a string!"); // 不会输出
}
if (v2.peek!string()) {
writeln("v2 is a string!"); // 输出 "v2 is a string!"
}
writeln(v1.type); // 输出 TypeInfo(int)
writeln(v2.type); // 输出 TypeInfo(string)
writeln(v3.type); // 输出 TypeInfo(int[])
}
这个例子创建了三个Variant对象,分别存储了一个整数、一个字符串和一个整数数组。使用get方法可以获取Variant对象中存储的值,使用peek方法可以判断Variant对象当前是否持有某种类型的值,使用type方法可以获取Variant对象当前持有值的TypeInfo
原文地址: https://www.cveoy.top/t/topic/e8Ep 著作权归作者所有。请勿转载和采集!