1

任意の長さの引数を受け入れる関数を使用して 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すべてのメンバーをから新しい配列にコピーしてから渡すことを避けるために使用できる解決策があるかどうかはわかりません。

4

1 に答える 1