我正在阅读NodeJS和V8源代码,特别是node_contextify.cc
文件,我无法理解以下行:
Context::Scope context_scope(debug_context);
我不明白什么是Context::Scope
之前似乎是一个函数调用。我不认为这是一个声明,因为它是一个函数代码,以及一个if
和其他调用。
完整相关代码:
...
if (debug_context.IsEmpty()) {
// [... lines removed for brevity ...]
}
Context::Scope context_scope(debug_context);
MaybeLocal<Script> script = Script::Compile(debug_context, script_source);
if (script.IsEmpty())
return; // Exception pending.
args.GetReturnValue().Set(script.ToLocalChecked()->Run());
}
...
Context::Scope
是什么意思
进一步信息:
文件:节点/node_contextify。Cc(第268行突出显示)。
虽然我知道这是一个关于语法的基本问题,但我甚至不知道如何调用它,所以我无法在Google, StackOverflow或c++参考中找到任何结果。
问题标题是我搜索时的一个尝试。
使用debug_context初始化context_scope变量。Context::Scope是类型(这里有一个参考页http://bespin.cz/~ondras/html/classv8_1_1Context_1_1Scope.html)
这是另一篇关于如何正确使用Context::Scope的文章
顺便说一句,即使你不知道该怎么称呼它,搜索"v8 Context::Scope"也会出现相关信息。
Context::Scope context_scope(debug_context);
你正在声明一个Context::Scope
类型的对象context_scope
,并用debug_context
初始化它Context::Scope
可以是在类或结构中定义的类型,例如:
class Context {
public:
using Scope = int;
....
}
或者Context::Scope
可以是名称空间内定义的类型,例如:
namespace Context {
using Scope = int;
...
}