问题标签 [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.
c++ - C++ 元编程 - 在代码中生成错误
有没有一种方法可以创建一个带有int
模板参数的函数,如果传递给函数的值小于 10,则让该函数给出编译时错误?
以下代码不起作用,但它显示了我想要完成的任务:
metaprogramming - 公元 1 年(又名公元 1 年)之前是哪一年?
前一年是公元 0 年还是公元前 1 年?
这是一个元编程问题,与列表中第一个数字的宗教战争有关。它应该是 0 还是 1?
需要考虑的几点:
- 理查德斯托曼会说什么?我最近读了他的一篇文章,他对 OLPC 提供 Windows 感到不安。他列出了这不好的原因。该列表已编号,从 0 开始。
- 当计算机突然不得不将每年存储的位数增加一倍时,他们将如何处理第 10 年的问题(Y1)?
- 考虑到当他为 excel 宏语言提出新版本的日期时,Joel 会如何处理这个问题,他考虑到日期 ID 对于 1900 年 1 月和 2 月的日期是错误的?(见这里:我的第一次 BillG 评论)
编辑: 下面@Svelil 引用的维基百科条目说没有公元 0 年,只是为了记录。我们直接从公元前 1 年到公元 1 年。
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 下拉框等。
任何想法或示例链接?
python - 在 Python 中创建“运行器”脚本的最佳方法是什么?
我在一个目录中有一堆 Python 模块,它们都是派生类。我需要一个“运行器”脚本,对于每个模块,实例化其中的类(实际的类名可以由模块文件名构建),然后在每个模块上调用“go”方法。
我不知道那里有多少模块,但我可以通过“bot_*.py”之类的方式列出所有模块
我认为这是关于“元编程”的东西,但怎么可能是最好(最优雅)的方式呢?
python - 有人在 Python/其他语言中使用元元类/元元类吗?
我最近在 python 中发现了元类。
基本上,python中的元类是一个创建类的类。您想要这样做的原因有很多——例如任何类型的类初始化。在工厂上注册类、复杂的属性验证、改变继承的工作方式等等。所有这些不仅变得可能而且变得简单。
但在 python 中,元类也是普通类。所以,我开始想知道抽象是否可以有用地更高,在我看来它可以而且:
- 元类对应或实现模式中的角色(如在 GOF 模式语言中)。
- 元元类就是模式本身(如果我们允许它创建代表抽象角色的类元组,而不仅仅是一个类)
- meta-meta-metaclass 是一个模式工厂,它对应于 GOF 模式分组,例如 Creational、Structural、Behavioural。一个工厂,您可以在其中描述某种类型的问题的案例,它会为您提供一组解决它的类。
- 一个 meta-meta-meta-metaclass (据我所知),是一个模式工厂 factory,一个你可以描述问题类型的工厂,它会给你一个模式工厂来询问。
我在网上找到了一些关于这个的东西,但大多不是很有用。一个问题是不同的语言对元类的定义略有不同。
有没有其他人在 python/其他地方使用过这样的元类,或者在野外看到过这个,或者考虑过它?其他语言的类似物是什么?例如,在 C++ 中,模板递归能走多远?
我非常想进一步研究它。
metaprogramming - 元编程到底是什么?
我正在阅读 TheServerSide 上关于 Java 平台上的多语言编程的文章。文章中的一些评论将元编程称为生成代码的能力(可能是动态的)。
元编程是动态生成代码的能力,还是在运行时将方法和属性注入现有对象的能力(就像 Python、Ruby 和 Groovy 等一些动态语言所允许的那样)。
python - Python 中的动态/运行时方法创建(代码生成)
我需要在运行时为方法生成代码。能够运行任意代码并拥有文档字符串非常重要。
我想出了一个结合exec
和的解决方案setattr
,这是一个虚拟示例:
是否有更好/更安全/更惯用的方法来实现相同的结果?
interface - Groovy:为接口委托元类?
使用 Groovy 的包名称约定,我可以像这样拦截对 Java 方法的 Groovy 方法调用:
如果我真的创建了一个 Foo 类的对象,这很好用:
但是,如果 Foo 是一个接口,并且我想拦截对它的任何实现的方法调用怎么办?
有没有办法实现这一点,而无需为接口的每个已知实现使用 DelegatingMetaClass?
ruby-on-rails - 如何在 ActiveRecord 中设置数据之前使设置方法加密数据?
我想实现一个 RailsUser
模型,它有一个名为password
. 我想做到这一点,以便当我打电话时......
该方法在将明文设置在实例上之前对其进行哈希处理,如下所示:
我试过使用回调,但问题是每次保存用户时都会对 pw 进行哈希处理,即使 pw 没有更新也是如此。所以它被一遍又一遍地散列和重新散列。
我尝试重新定义password=
方法...
但得到一个错误说不password=
存在。
c++ - 如何在 C++ 中调试大量模板化的代码?
我发现在使用 C++ 模板元编程时很难弄清楚我的代码有什么问题。可能是我不太擅长理解错误消息,但据我所知,我不能求助于放入打印语句或断点来弄清楚发生了什么。
除了手动挑选代码并希望它会来找我之外,当你试图弄清楚为什么某些东西没有编译时,你能提供什么提示或建议?