如何在强制它之前检查Variant是否为空?
问题描述:
我从Variant
类型获取数据库数据。在强制它之前,我需要检查变量是否有任何数据。如何在强制它之前检查Variant是否为空?
cargpspoint.speed = point[0].coerce!int;
如果point[0]
将null
我会得到异常。我只有在变量有价值时才需要强制执行。有很长的路要走:
if(point[0].hasValue && point[0].peek!(int) !is null)
有什么办法可以缩短它吗?或者如果里面有空,最后不要抛出Exception
。
答
您可以检查是否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) {}
}