2017-04-18 5 views
1

Variant 유형의 데이터베이스 데이터를 가져 왔습니다. 변수를 강제 변환하기 전에 변수에 데이터가 있는지 확인해야합니다. point[0]null 될 경우변형을 강제하기 전에 null이 아닌지 확인하는 방법은 무엇입니까?

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

나는 예외를 얻을 것이다. 변수가 가치가있는 경우에만 억지로 할 필요가 있습니다. 방법이 먼 길입니다.

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

길이를 줄이는 방법이 있습니까? 또는 내부에 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) {} 
}