我从Variant
类型的数据库数据中获取。我需要在强制变量之前检查变量是否有任何数据。
cargpspoint.speed = point[0].coerce!int;
如果point[0]
为null
,我将获得例外。只有当变量具有价值时,我才需要强制执行。有很长的路要走:
if(point[0].hasValue && point[0].peek!(int) !is null)
有没有办法做得更短?或者最后如果内部为空则不抛出Exception
。
答案 0 :(得分:2)
您可以检查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) {}
}