metaprogramming相关内容

强制执行来自元模型的单个实例

我知道从类级别确保单个实例要容易得多,而且Jonathan Stowe提供了出色的Staticish模块,它通过使用角色来实现相同的功能,但我只想尝试更好地理解如何处理class higher order working,主要是为了FOSDEM演讲。我可以想出几种在元模型级别执行操作的方法,但最终我想出了以下方法: my class MetamodelX::Singleton is Meta ..
发布时间:2022-07-12 18:05:55 其他开发

CLASS_VERVS实例_VERA

除def之外,class_eval&;instance_eval的工作方式有什么不同?class_eval块def将方法定义为类本身(即实例方法),而instance_eval块def将方法定义为类的特征类(即类方法)。AFAIK所有其他功能在这两种情况下的工作方式相同(例如,定义常量的define_method、attr_accessor、class ..
发布时间:2022-04-07 20:49:27 其他开发

什么是元编程?

关于this question,有人能解释一下并发布元编程的示例代码吗?我在谷歌上搜索了这个词,但我找不到任何例子来说服我,它可以有任何实际用途。 同样,Qt's Meta Object System是元编程的一种形式吗? JRH 推荐答案 到目前为止,大多数示例都对值进行了操作(计算pi的位数、N的阶乘或类似的值),这些都是教科书上的示例,但通常不是很有用。很难想象有哪种 ..
发布时间:2022-04-07 20:47:35 C/C++开发

更改给定 STL 容器的 value_type

假设,我有一个 STL 容器 type(不是对象),比如 vector.现在它的 value_type 是 A,所以我想把它改成 B. 基本上,我想要一个这种形式的类模板,或者它的变体: template结构 change_value_type{typedef/*....*/new_container;}; 以便我可以通过以下方式使用它: typename change_value_t ..
发布时间:2022-01-24 20:47:47 C/C++开发

可变参数模板的 GCC 错误:“抱歉,未实现:无法将“标识符..."扩展为固定长度的参数列表"

在 GCC 上使用 C++11 进行可变参数模板编程时,偶尔会收到一条错误消息,提示“抱歉,未实现:无法将 '标识符...' 扩展为固定长度的参数列表."如果我删除代码中的“...",我会得到一个不同的错误:“错误:参数包没有用'...'扩展". 因此,如果我输入了“...",则 GCC 将其称为错误,如果我将“..."取出,则 GCC 也将其称为错误. 我能够处理这个问题的唯一方法是 ..
发布时间:2022-01-23 20:29:59 C/C++开发

如何创建抑制错误和警告的宏?

我想重新定义或覆盖 Base 中的一些函数,而用户不会注意到这一点.我前段时间发现了这个技巧: original_stderr = STDERR重定向标准错误()# 代码重定向标准错误(原始标准错误) 这对我来说变成了重复的模式,所以我做了一个宏: macro suppress_err(block)引用orig_err = STDERR重定向标准错误()val = $块重定向标准错误(ori ..
发布时间:2022-01-23 19:35:23 其他开发

在 Julia 中使用元编程优化递归函数

按照 this answer 的方法,我试图了解究竟发生了什么以及表达式和生成的函数在 Julia 中是如何工作的元编程的概念内. 目标是使用表达式和生成函数优化递归函数(具体示例,您可以查看上面提供的链接中回答的问题). 考虑以下修改后的斐波那契函数,其中我想计算斐波那契数列直到 n 并将其乘以一个数字 p. 简单的递归实现是 函数 fib(n::Integer, p::Re ..
发布时间:2022-01-23 19:26:37 其他开发

使用元编程在 Julia 中声明顶级变量

我想用元编程回答这个问题,但是for的范围规则循环导致我的变量没有在最上层(REPL)范围内定义: 对于 x = [:A1, :A2]@eval x = rand(2,2)结尾 我知道可能有一个简单的方法可以解决这个问题,但我周五晚上的大脑想不出一个.你们中的一个元编程迷可以帮我找到一个简洁的解决方案吗?(我意识到宏可能适用于转义,但我正在尝试想一些更短的东西) 解决方案 如果你只想在 ..
发布时间:2022-01-23 19:07:03 其他开发

如何从元组 C++ 中过滤重复类型

如何过滤元组中的重复类型? 例如: 使用元组 = std::tuple使用 FilteredTuple = without_duplicates; 其中 without_duplicates 的实现方式是生成以下 FilteredTuple 类型: std::tuple 解决方案 这应该可行: 模板结构包含;模板 ..
发布时间:2022-01-19 23:57:23 C/C++开发

如何获取 Ruby 中“必需"的文件列表?

这纯粹是一个实验,但我想知道是否可以通过某种元编程在运行时获取 require 的 gem 列表.例如,假设我有: 需要'rubygems'需要'sinatra'需要'nokogiri'# 不知道在这里做什么 如何在运行时打印出以下内容? 此应用需要 ruby​​gems、sinatra、nokogiri 解决方案 你不能完全做到这一点,因为需要一个文件可能需要其他文件,而 Ruby 无 ..
发布时间:2022-01-18 18:17:11 其他开发

如何在编译时驱动 C#、C++ 或 Java 编译器计算 1+2+3+...+1000?

在最近的一次采访中,我被问到一个非常奇怪的问题.面试官问我如何仅使用编译器功能计算 1+2+3+...+1000.这意味着我不能编写程序并执行它,但我应该只编写一个程序,它可以驱动编译器在编译时计算这个总和,并在编译完成时打印结果.作为提示,他告诉我我可以使用编译器的泛型和预处理器特性.可以使用 C++、C# 或 Java 编译器.有什么想法??? 这个问题与在没有任何循环的情况下计算总和无 ..
发布时间:2022-01-17 08:29:16 Java开发

在 VBScript 中实现延迟加载模块

不久前,我需要一个在 VBScript 中合理导入库的解决方案. 作为参考,VBScript 没有内置的导入功能.导入文件的传统方法是使用 SSI,它将包含的内容逐字转储到包含器中.由于多种原因,这不是最理想的:无法避免多次包含,无法指定库目录等.所以我编写了自己的函数.这相当简单,使用带有字典的 executeGlobal 来跟踪导入的模块并将整个东西包装在一个对象中进行封装: 类 Im ..
发布时间:2022-01-16 16:04:43 其他开发

有没有办法在 Java 中使用注释来替换访问器?

我对 Java 5 注释有点陌生,我很好奇其中任何一个是否可行: 这个注解会为你生成一个简单的getter和setter. @attribute私有字符串 var = ""; @NotNull 注释表示变量不能为空,因此您不必每次都编写样板代码. /** @param s @NotNull*/公共无效 setString(String s){...} 这些都行吗?如果可以的话,它们似 ..
发布时间:2022-01-13 10:21:02 Java开发

术语列表的术语扩展

假设我想要一些规则都遵循相同的模式.当我想通过明确列出所有可能的第一个参数来避免非确定性行为时,我遇到了这种情况.然而,我知道,对于某些可能性,我需要做同样的事情.处理它的一种方法是在末尾添加一个包罗万象的子句: foo(a) :-/* 做某事 */.foo(b) :-/* 做别的事*/.富(_)./* 忽略其余部分 */ 但这不是很好,因为我实际上不知道是否有意外的输入,或者我的程序是否出错 ..
发布时间:2022-01-12 10:40:13 其他开发

C++ 宏/元程序在编译时确定成员数

我正在开发一个具有基于消息/异步代理类架构的应用程序.将有几十种不同的消息类型,每种都由 C++ 类型表示. 类 message_a{long long 标识符;加倍一些值;类的东西_else;...//更多数据成员} 是否可以编写允许在编译时计算类中数据成员数量的宏/元程序? //例如: 类 message_b{long long 标识符;字符 foobar;}位集 ..
发布时间:2022-01-11 19:52:34 C/C++开发