2017-04-18 68 views
1

我從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

回答

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