2017-01-03 55 views
1

初始化我有这样的(这是一个Node.js的插件)给整数默认值,如果它们是作为空

void Method(const v8::FunctionCallbackInfo<v8::Value>& args) { 

    int count = args[2]->ToNumber()->NumberValue(); 
    int priority = args[3]->ToNumber()->NumberValue(); 
    int priority_search_cap = args[4]->ToNumber()->NumberValue(); 

    cout << " count => " << count << endl; 
    cout << " priority => " << priority << endl; 
    cout << " priority_search_cap => " << priority_search_cap << endl; 

} 

我所得到的注销是:

count => -2147483648 
priority => -2147483648 
priority_search_cap => -2147483648 

我想什么要做的是给这些变量的默认值,以防没有值传递给他们正确地初始化它们? (含义,args [2],args [3],args [4]未定义。)

如何给这些整数默认值?

+0

为什么不在调用'ToNumber'之前检查args类型(例如'Value :: IsUndefined')? – DMaster

回答

5

Value类型有一个很好的IsUndefined()方法来检查这个

你可以这样使用三元表达式中未定义值的情况下,设定值0做:

int count = args[2]->IsUndefined() ? 0 : args[2]->ToNumber()->NumberValue(); 
int priority = args[3]->IsUndefined() ? 0 : args[3]->ToNumber()->NumberValue(); 
int priority_search_cap = args[4]->IsUndefined() ? 0 : args[4]->ToNumber()->NumberValue(); 

检查Value API这里:http://bespin.cz/~ondras/html/classv8_1_1Value.html#aea287b745656baa8a12a2ae1d69744b6

+0

@ Olegzandr:感谢编辑! –

相关问题