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

问题描述:

我从Variant类型获取数据库数据。在强制它之前,我需要检查变量是否有任何数据。如何在强制它之前检查Variant是否为空?

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

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

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

有什么办法可以缩短它吗?或者如果里面有空,最后不要抛出Exception

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) {} 
}