我正在阅读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/node_contextify.cc(第268行突出显示)。
虽然我知道这是一个关于语法的基本问题,但我甚至不知道如何调用它,所以我无法在Google,StackOverflow或C ++参考中找到任何结果。
问题标题是我搜索时的尝试之一。
答案 0 :(得分:3)
使用debug_context初始化context_scope变量。 Context :: Scope是类型(这里是一个参考页面http://bespin.cz/~ondras/html/classv8_1_1Context_1_1Scope.html)
这是关于使用Context :: Scope How to correctly use Context::Scope ?
的另一篇文章 顺便说一句,即使你不知道该怎么称呼它,搜索&#34; v8 Context :: Scope&#34;会发现信息。答案 1 :(得分:2)
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;
...
}