问题标签 [metaprogramming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2246 浏览

c++ - C++ 元编程 - 在代码中生成错误

有没有一种方法可以创建一个带有int模板参数的函数,如果传递给函数的值小于 10,则让该函数给出编译时错误?

以下代码不起作用,但它显示了我想要完成的任务:

0 投票
3 回答
1683 浏览

metaprogramming - 公元 1 年(又名公元 1 年)之前是哪一年?

前一年是公元 0 年还是公元前 1 年?

这是一个元编程问题,与列表中第一个数字的宗教战争有关。它应该是 0 还是 1?

需要考虑的几点:

  • 理查德斯托曼会说什么?我最近读了他的一篇文章,他对 OLPC 提供 Windows 感到不安。他列出了这不好的原因。该列表已编号,从 0 开始。
  • 当计算机突然不得不将每年存储的位数增加一倍时,他们将如何处理第 10 年的问题(Y1)?
  • 考虑到当他为 excel 宏语言提出新版本的日期时,Joel 会如何处理这个问题,他考虑到日期 ID 对于 1900 年 1 月和 2 月的日期是错误的?(见这里:我的第一次 BillG 评论

编辑: 下面@Svelil 引用的维基百科条目说没有公元 0 年,只是为了记录。我们直接从公元前 1 年到公元 1 年。

0 投票
3 回答
517 浏览

perl - 我可以自动发现 shell 或 Perl 脚本的参数来为它们“元”编程 WEB UI 吗?

是否可以自动发现 shell/Perl 脚本的参数以便为它们“元”编程 WEB UI?


我有一堆“遗留”脚本,我想“web wrap”。到目前为止,我已经创建了一个 CGI-BIN Web 应用程序,其中包含大约 3 个可以调用 bash/Perl 报告脚本的参数。

但现在我想到也许有更快或自动的方法来包装这 100 多个脚本。

所以基本上我想了解元编程技术,在那里我会发现特定的 bash 或 Perl 脚本采用哪些输入参数,然后生成相应的 HTML FORM 元素,这些输入参数作为 TEXT INPUT 或 SELECT 下拉框等。

任何想法或示例链接?

0 投票
4 回答
2357 浏览

python - 在 Python 中创建“运行器”脚本的最佳方法是什么?

我在一个目录中有一堆 Python 模块,它们都是派生类。我需要一个“运行器”脚本,对于每个模块,实例化其中的类(实际的类名可以由模块文件名构建),然后在每个模块上调用“go”方法。

我不知道那里有多少模块,但我可以通过“bot_*.py”之类的方式列出所有模块

我认为这是关于“元编程”的东西,但怎么可能是最好(最优雅)的方式呢?

0 投票
5 回答
1932 浏览

python - 有人在 Python/其他语言中使用元元类/元元类吗?

我最近在 python 中发现了元类。

基本上,python中的元类是一个创建类的类。您想要这样做的原因有很多——例如任何类型的类初始化。在工厂上注册类、复杂的属性验证、改变继承的工作方式等等。所有这些不仅变得可能而且变得简单。

但在 python 中,元类也是普通类。所以,我开始想知道抽象是否可以有用地更高,在我看来它可以而且:

  • 元类对应或实现模式中的角色(如在 GOF 模式语言中)。
  • 元元类就是模式本身(如果我们允许它创建代表抽象角色的类元组,而不仅仅是一个类)
  • meta-meta-metaclass 是一个模式工厂,它对应于 GOF 模式分组,例如 Creational、Structural、Behavioural。一个工厂,您可以在其中描述某种类型的问题的案例,它会为您提供一组解决它的类。
  • 一个 meta-meta-meta-metaclass (据我所知),是一个模式工厂 factory,一个你可以描述问题类型的工厂,它会给你一个模式工厂来询问。

我在网上找到了一些关于这个的东西,但大多不是很有用。一个问题是不同的语言对元类的定义略有不同。

有没有其他人在 python/其他地方使用过这样的元类,或者在野外看到过这个,或者考虑过它?其他语言的类似物是什么?例如,在 C++ 中,模板递归能走多远?

我非常想进一步研究它。

0 投票
8 回答
82003 浏览

metaprogramming - 元编程到底是什么?

我正在阅读 TheServerSide 上关于 Java 平台上的多语言编程的文章。文章中的一些评论将元编程称为生成代码的能力(可能是动态的)。

元编程是动态生成代码的能力,还是在运行时将方法和属性注入现有对象的能力(就像 Python、Ruby 和 Groovy 等一些动态语言所允许的那样)。

0 投票
6 回答
51641 浏览

python - Python 中的动态/运行时方法创建(代码生成)

我需要在运行时为方法生成代码。能够运行任意代码并拥有文档字符串非常重要。

我想出了一个结合exec和的解决方案setattr,这是一个虚拟示例:

是否有更好/更安全/更惯用的方法来实现相同的结果?

0 投票
1 回答
1506 浏览

interface - Groovy:为接口委托元类?

使用 Groovy 的包名称约定,我可以像这样拦截对 Java 方法的 Groovy 方法调用:

如果我真的创建了一个 Foo 类的对象,这很好用:

但是,如果 Foo 是一个接口,并且我想拦截对它的任何实现的方法调用怎么办?

有没有办法实现这一点,而无需为接口的每个已知实现使用 DelegatingMetaClass?

0 投票
4 回答
756 浏览

ruby-on-rails - 如何在 ActiveRecord 中设置数据之前使设置方法加密数据?

我想实现一个 RailsUser模型,它有一个名为password. 我想做到这一点,以便当我打电话时......

该方法在将明文设置在实例上之前对其进行哈希处理,如下所示:

我试过使用回调,但问题是每次保存用户时都会对 pw 进行哈希处理,即使 pw 没有更新也是如此。所以它被一遍又一遍地散列和重新散列。

我尝试重新定义password=方法...

但得到一个错误说不password=存在。

0 投票
11 回答
8287 浏览

c++ - 如何在 C++ 中调试大量模板化的代码?

我发现在使用 C++ 模板元编程时很难弄清楚我的代码有什么问题。可能是我不太擅长理解错误消息,但据我所知,我不能求助于放入打印语句或断点来弄清楚发生了什么。

除了手动挑选代码并希望它会来找我之外,当你试图弄清楚为什么某些东西没有编译时,你能提供什么提示或建议?