metaprogramming 相关问题

元编程是重新编程编程环境的能力,就像宏或元类一样。

DolphinDB:无法解析submitJob提交的函数定义

直接用run_factor()运行以下代码时,执行成功。但是,当我使用submitJob函数时,出现错误: 语法错误:[第 1 行] 无法识别令牌

回答 1 投票 0

在 DolphinDB 元编程中传递变量

在元编程中用变量替换指定值是否可行?例如,我打算将 where Date = 2015.01.15 替换为 where Date = $(date),其中“date”是一个变量。

回答 1 投票 0

元编程中如何正确编写SQL元代码?

这是我的脚本: snap = loadTable("dfs://China_Market_HF", `Market_Snapshot) 从日期 = 2015.01.15 的快照中选择计数(*) 执行( 这是我的脚本: snap = loadTable("dfs://China_Market_HF", `Market_Snapshot) select count(*) from snap where Date = 2015.01.15 exec(<select count(*) from snap where Date = 2015.01.15>) 在此脚本中,SQL语句 select count(*) from table where d == 2023.10.10 是正确的,但我收到错误: 语法错误:[第 3 行] FROM 子句预期 在元编程中,您应该使用 eval 函数来评估给定的元代码,而不是 exec。 eval(<select count(*) from table where d == 2023.10.10>)

回答 1 投票 0

如何解决 DolphinDB 错误:函数 [nullFill] 需要 2 个参数,但实际参数数量是:1?

对于以下脚本,DolphinDB 报告错误:函数 [nullFill] 需要 2 个参数,但实际参数数量为: 1 。 sqlCol(zfill_col, nullFill(0), zfill_col)) 如何...

回答 1 投票 0

过滤参数包类型

我想知道是否可以过滤传递给可变参数模板(基于谓词模板)的类型,以生成另一个可变参数模板,其中包含满足预条件的类型...

回答 1 投票 0

模块级方法重写在 ruby 中如何工作?

我有一些基于这个答案的代码:https://stackoverflow.com/a/2136117/2158544。本质上它看起来像这样(注意:在实际代码中,我不控制模块A): 模块A def self.incl...

回答 1 投票 0

ruby 中的`self.included`(通常称为`base`)提供了什么?

我试图更好地理解 ruby 元编程,虽然我有我想做的解决方法,但我想让它尽可能干净。 简而言之,我想检查是否...

回答 1 投票 0

C++ 元编程中的模板柯里化

这更多是一个概念性问题。我试图找到将两个参数模板(参数是类型)转换为一个参数模板的最简单方法。即,绑定其中一种类型。 这...

回答 3 投票 0

C/C++ 宏来重复代码

有没有办法用宏重复C代码N次? N 也是一个宏。 例如,如果我有这个宏: #定义N 5 #define COODE“nop ” #定义重复[...] 当我打电话时重复

回答 5 投票 0

C++ 模板与 OOD 困境 - 我怎样才能绕过实现“模板化类成员变量”之类的东西?

我试图使用模板来节省大量代码重复。 理想情况下,我想做一些类似的事情(我知道它的垃圾代码): 类注册表{ 民众: 模板 我试图使用模板来节省大量代码重复。 理想情况下,我想做一些类似的事情(我知道它的垃圾代码): class Registries { public: template<typename T> void AddToRegistry(T thing) { registry.push_back(thing); } template<typename T> std::vector<T>* GetRegistry<T>() { return &registry(); } private: template<typename T> std::vector<T> registry; // auto-magically created vectors for each used type }; int main() { Registries registries; CoolThing thing1; NiceThing thing2; // ... Many N types registries.AddToRegistry(thing1); registries.AddToRegistry(thing2); std::vector<CoolThing>* cool_registry = registries.GetRegistry<CoolThing>(); std::vector<NiceThing>* nice_registry = registries.GetRegistry<NiceThing>(); } 它当然不起作用,因为我无法模板化类成员 - 不会为每种类型创建变量,并且这些函数不知道要返回哪个): 我可以这样做,但它们都会存储在静态内存中(不理想): class CoolThing { public: static std::vector<CoolThing> registry; }; class NiceThing { public: static std::vector<NiceThing> registry; }; class Registries { public: template<typename T> void AddToRegistry(T thing) { T::registry.push_back(thing); } } int main() { Registries registries; registries.AddToRegistry(CoolThing()); registries.AddToRegistry(NiceThing()); // ... Many N types } 我还在模板中尝试了 switch 和 if-else,但它们似乎不兼容: class CoolThing { public: const static ThingType TYPE = COOL; }; class NiceThing { public: const static ThingType TYPE = NICE; }; class Registries { public: template<typename T> void AddToRegistry(T thing) { switch (T::TYPE) { case ThingType::COOL: cool_registry.push_back(thing); return; case ThingType::NICE: nice_registry.push_back(thing); return; default: return; } } template<typename T> std::vector<T>* GetRegistry<T>() { if (T::TYPE == ThingType::COOL) { return &cool_registry; } else if (T::TYPE == ThingType::NICE) { return &nice_registry; } return nullptr; } private: std::vector<CoolThing> cool_registry; std::vector<NiceThing> nice_registry; // ... Many N types }; int main() { Registries registries; CoolThing thing1; NiceThing thing2; // ... Many N types registries.AddToRegistry(thing1); registries.AddToRegistry(thing2); std::vector<CoolThing>* = registries.GetRegistry<CoolThing>(); std::vector<NiceThing>* = registries.GetRegistry<NiceThing>(); } 我觉得我的选择是静态方式,或者编写一长串(20+类型)函数重载以添加到正确的注册表类型。 任何模板专家都知道替代方案吗? 非常感谢 您最可能寻找的是模板专业化。您可以在模板化定义上定义特定类型案例的行为。 class Regs { public: template<typename T> void AddRegister(T t) { ... } // Generic Case template<> void AddRegister<CoolThing>(CoolThing ct) { ... } // When T is CoolThing template<> void AddRegister<NiceThing>(NiceThing nt) { ... } // When T is NiceThing };

回答 1 投票 0

查找 Ruby 在运行程序时打开的所有当前文件

这是一个深奥的请求,对我来说只是理论上的兴趣(换句话说,我没有在生产代码中使用它)。我想知道是否有可能找出所有的f...

回答 4 投票 0

如何扩展这个C++模板参数包

我想将模板参数包展开成二维数组,但不知道如何实现 因为矩阵类的元素通常都是浮点小数,但是这个...

回答 2 投票 0

最小的 gradle 多项目构建,包括全局 AST 转换

我正在尝试创建一个 gradle 项目,将项目 A 中定义的全局 AST 转换应用到项目 B 中定义的类。我一直按照本指南中的说明进行操作,但没有成功...

回答 1 投票 0

创建动态推导类型的智能指针?

是否可以在不使用 if 序列的情况下创建动态推导类型的指针? 我应该使用什么作为地图值类型? 类车辆{ 民众: 虚拟无效运行()=0; }; // 德尔...

回答 1 投票 0

如何在 Scala 3 宏中动态创建枚举值?

我正在动态创建一个枚举值。我有一个枚举类型(不是对象本身)和一个表示有效值的字符串,例如“红色”代表颜色。红色。 // T 是颜色(枚举)。我已经

回答 1 投票 0

如何编写一个(最好是声明性的)Rust 宏来遍历 AST?

我正在尝试编写一个宏,它接受(并扩展为)代码块,但也会收集它找到的文档字符串(使用文档字符串只是属性的事实)。例如,

回答 1 投票 0

元编程 - 检查所有类型是否均为 true

我正在尝试在 C++11 中实现一个功能来检查所有非模板布尔参数是否为 true。举个例子 static_assert(all_true::value) // 应该 ...

回答 1 投票 0

如何定义使用C++ 20中的“概念”的“概念”?

我正在研究C++ 20中的概念,并提出需要使用先前定义的概念来定义概念。 因此,在下面的示例中,我预计 f() 会生成编译器错误,

回答 1 投票 0

函数调用中 std::array 中元素的确切数量

我有一个函数,它接受给定大小 N 的 std::array void func(std::array x) { // 做一点事 } int main() { func({4,4,4}) // 有效 func({4}) // 也可以 } 我明白了...

回答 1 投票 0

使用模板参数创建传递给另一个函数的参数列表

我正在创建一个系统,用户可以通过定义数据片段(称为资源)和作用于资源的函数(称为系统)来创建应用程序。我希望用户纯粹提供一个

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.