如何在强制之前检查 Variant 是否不为空?

How to check if Variant not null before coerce it?

我正在从 Variant 类型的数据库中获取数据。我需要在强制变量之前检查变量是否有任何数据。

  cargpspoint.speed = point[0].coerce!int;

如果 point[0] 将是 null 我将获得异常。只有当变量有价值时我才需要强制执行。还有很长的路要走:

if(point[0].hasValue && point[0].peek!(int) !is null)

有什么办法可以缩短吗?或者最后不抛出 Exception 如果里面有 null。

https://dlang.org/phobos/std_variant.html

你可以看看里面的typeid是不是void.

import std.variant : Variant;

struct CarGPSPoint
{
    int speed;
}

void main()
{
    Variant point[] = new Variant[5];

    CarGPSPoint cargpspoint;

    if ( point[0].type != typeid(void) )
        cargpspoint.speed = point[0].coerce!int;
}

或者只是捕获并丢弃异常。

import std.variant : Variant, VariantException;

struct CarGPSPoint
{
    int speed;
}

void main()
{
    Variant point[] = new Variant[5];

    CarGPSPoint cargpspoint;

    try
        cargpspoint.speed = point[0].coerce!int;
    catch (VariantException e) {}
}