Node.js C++: 检查 Local 是否在 std::vector<Persistent> 中

在 Node.js C++ 扩展中,我们可能需要检查一个 Local<Function> 是否存在于一个 std::vector<Persistent<Function>> 中。可以使用 std::find_if 算法来实现这一功能。

代码示例

#include <node.h>
#include <vector>

using v8::Persistent;
using v8::Local;
using v8::Function;

bool isFunctionInVector(const std::vector<Persistent<Function>>& vec, Local<Function> func) {
  return std::find_if(vec.begin(), vec.end(), [&](const Persistent<Function>& persistentFunc) {
    return persistentFunc.Get(isolate) == func;
  }) != vec.end();
}

其中,isolate 是当前的 v8::Isolate 对象,可以在调用函数时传递进来或者从其他地方获取。

使用方法

std::vector<Persistent<Function>> functions;
// 将函数加入函数向量中
Local<Function> func = ...;
functions.emplace_back(isolate, func);
// 检查函数是否在函数向量中
if (isFunctionInVector(functions, func)) {
  // 函数在函数向量中
} else {
  // 函数不在函数向量中
}

总结

通过 std::find_if 算法,我们可以方便地检查一个 Local<Function> 是否存在于 std::vector<Persistent<Function>> 中,从而在 Node.js C++ 扩展中进行更灵活的操作。

Node.js C++: 检查 Local<Function> 是否在 std::vector<Persistent<Function>> 中

原文地址: https://www.cveoy.top/t/topic/ooo7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录