任意の長さの引数を受け入れる関数を使用して Node.js ネイティブ モジュールを作成していますが、これは JS の場合と似ています。
cb = function( )
{
// Receive arguments and do something...
}
foo = function( )
{
cb.apply({}, arguments)
}
foo([1,2,3])
foo([4])
ここでは、任意の引数で をfoo
適用します。cb
コールバックに関するほとんどの Node.js 記事によると、C++ バージョンは次のようになります。
Handle<Value> Foo(const Arguments& args)
{
HandleScope scope;
// Assume that we can get callback from somewhere else.
Local<Function> cb = getExistingCallback();
// Now call it with arbitrary arguments.
cb->Call(Object::New(), args.Length(), args.Data());
return scope.Close(Undefined());
}
ただし、Arguments::Data
提供できるのは のみで、 は提供できないためv8::Local<v8::Value>&
、v8::Handle<v8::Value>*
コンパイラはエラーをスローします。
Local
から派生したものなのでHandle
問題ありません。Data
すべてのメンバーをから新しい配列にコピーしてから渡すことを避けるために使用できる解決策があるかどうかはわかりません。