Nan::To<T> 接受所有转换
Nan::To<T> accepts all conversions
我正在尝试编写一个参数验证辅助函数,但显然 Nan::To 转换和反对 T 永远不会失败,即使转换是不可能的。
//convert.cpp
template <typename T>
bool argument_verify(Local<Value> const& in_value, T & out_value)
{
auto maybe_value = Nan::To<T>(in_value);
if (maybe_value.IsJust()) return true;
else return false;
}
void test(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
u_int32_t param1;
bool verify_param1 = argument_verify(args[0], param1);
args.GetReturnValue().Set(verify_param1);
}
//test.js
describe('Sandbox - This is just a place for testing stuff', function() {
it('Testing new library argument verification', function() {
const out_buffer = cil.test(function(){})
console.log(out_buffer)
})
it('Testing new library argument verification', function() {
const out_buffer = cil.test({"this_is":"json"})
console.log(out_buffer)
})
it('Testing new library argument verification', function() {
const out_buffer = cil.test()
console.log(out_buffer)
})
})
在上面的代码中,如果我的理解是正确的,Nan::To 返回的 Maybe 对象应该是空的。不应存在从 json 到 u_int32_t、函数到 u_int32_t 或未定义到 u_int32_t.
的合法转换
但我仍然觉得所有 3 个案例都只是。
我是不是误解了函数 Nan::To?
查看讨论:
https://github.com/nodejs/nan/issues/726
简答:
Assuming u_int32_t is the same as uint32_t, then yes, there is. The
converters follow JS semantics; e.g. undefined >>> 0 === 0
我正在尝试编写一个参数验证辅助函数,但显然 Nan::To 转换和反对 T 永远不会失败,即使转换是不可能的。
//convert.cpp
template <typename T>
bool argument_verify(Local<Value> const& in_value, T & out_value)
{
auto maybe_value = Nan::To<T>(in_value);
if (maybe_value.IsJust()) return true;
else return false;
}
void test(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
u_int32_t param1;
bool verify_param1 = argument_verify(args[0], param1);
args.GetReturnValue().Set(verify_param1);
}
//test.js
describe('Sandbox - This is just a place for testing stuff', function() {
it('Testing new library argument verification', function() {
const out_buffer = cil.test(function(){})
console.log(out_buffer)
})
it('Testing new library argument verification', function() {
const out_buffer = cil.test({"this_is":"json"})
console.log(out_buffer)
})
it('Testing new library argument verification', function() {
const out_buffer = cil.test()
console.log(out_buffer)
})
})
在上面的代码中,如果我的理解是正确的,Nan::To 返回的 Maybe 对象应该是空的。不应存在从 json 到 u_int32_t、函数到 u_int32_t 或未定义到 u_int32_t.
的合法转换但我仍然觉得所有 3 个案例都只是。
我是不是误解了函数 Nan::To?
查看讨论:
https://github.com/nodejs/nan/issues/726
简答:
Assuming u_int32_t is the same as uint32_t, then yes, there is. The converters follow JS semantics; e.g. undefined >>> 0 === 0