d - 将变体转换为正确类型的正确方法是什么



我使用返回变量数据类型的mysql-native。我需要将其转换为标准类型,如intstring等。

D有std.conv,但std.variant也有凝固的方法。

我不明白:getcoercetoStringto(从std.conv(之间有什么区别。

听起来也很奇怪,convertsTo是返回bool.根据它的名字,我希望它应该做惯例。恕我直言,isConvertable是更合适的名称。

三种方法可以从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);
    

相关内容

  • 没有找到相关文章

最新更新