C++ を使用するのは久しぶりで、ハード型に頭を悩ませるのはさらに久しぶりです。v8 から引数を取得するための動作する1 つのライナー、または引数が指定されていない場合のデフォルト値を探しているだけです。
v8::String::Utf8Value arg0(args[0]);
v8::String::Utf8Value arg1(args[1]);
v8::String::Utf8Value arg2(args[2]);
const char *username = (args.Length() > 0) ? *arg0 : "";
const char *password = (args.Length() > 1) ? *arg1 : "";
const char *service = (args.Length() > 2) ? *arg2 : "login";
出力:
関数(); // { ユーザー名: ""、パスワード: ""、サービス: "ログイン" } 関数 ('1'); // { ユーザー名: "1"、パスワード: ""、サービス: "ログイン" } func('1', '2'); // { ユーザー名: "1"、パスワード: "2"、サービス: "ログイン" } func('a', 'b', 'c'); // { ユーザー名: "a"、パスワード: "b"、サービス: "c" }
残念ながら、次の理想に近い解決策は私にはうまくいきません(理由はありますか?):
const char *username = (args.Length() > 0) ? *v8::String::Utf8Value(args[0]->ToString()) : "";
const char *password = (args.Length() > 1) ? *v8::String::Utf8Value(args[1]->ToString()) : "";
const char *service = (args.Length() > 2) ? *v8::String::Utf8Value(args[2]->ToString()) : "login";