我使用返回Variant数据类型的mysql-native
。我需要将其转换为标准类型,例如int
,string
等。
D有std.conv
,但std.variant
也有固结方法。
我无法理解:get
,coerce
,toString
和to
(来自std.conv
)之间的区别。
convertsTo
返回bool
听起来很奇怪。根据它的名字我期望它应该做惯例。恕我直言isConvertable
更适合它。
答案 0 :(得分:4)
有三种方法可以从Variant
类型中获取值:
Variant.peek!T
:如果Variant
对象当前保存的值是T
类型,则返回指向该值的指针。如果它持有不同类型的值,则返回null。
Variant v = "42";
string* ptr = v.peek!string;
assert(ptr !is null && *ptr == "42");
Variant.get!T
:如果Variant
对象当前持有的值是T
类型,则返回它的值。否则,抛出VariantException
。
Variant v = "42";
assertThrown!VariantException(v.get!int);
assertNotThrown!VariantException(v.get!string);
Variant.coerce!T
:返回Variant
对象当前持有的值,显式转换为类型T
。如果无法将值转换为T
类型,则会抛出Exception
。
Variant v = "42";
string s = v.coerce!string;
assert(s == "42");
int i = v.coerce!int;
assert(i == 42);