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