我使用返回变量数据类型的mysql-native
。我需要将其转换为标准类型,如int
、string
等。
D有std.conv
,但std.variant
也有凝固的方法。
我不明白:get
,coerce
,toString
和to
(从std.conv
(之间有什么区别。
听起来也很奇怪,convertsTo
是返回bool
.根据它的名字,我希望它应该做惯例。恕我直言,isConvertable
是更合适的名称。
三种方法可以从Variant
类型中获取值:
Variant.peek!T
:如果Variant
对象当前持有的值是T
类型,则返回指向该值的指针。如果它保存不同类型的值,则返回 nullVariant 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);