问题标签 [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 投票
31 回答
34255 浏览

python - 用于元编程的 Python 与 Ruby

我目前主要是一名D程序员,并希望在我的工具箱中添加另一种语言,最好是支持元编程黑客的语言,而这种黑客技术无法用像 D 这样的静态编译语言来完成。

我已经阅读了一点 Lisp,我很想找到一种语言,它允许 Lisp 所做的一些很酷的事情,但没有 Lisp 的奇怪语法等。我不想引发一场语言之战,而且我确信 Ruby 和 Python 都有各自的取舍,所以我将列出对我个人而言重要的内容。请告诉我 Ruby、Python 或其他语言是否最适合我。

重要的:

  1. 很好的元编程。能够在运行时创建类、方法、函数等。最好是代码和数据之间的最小区别,Lisp 风格。
  2. 漂亮、干净、健全的语法和一致、直观的语义。基本上是一种经过深思熟虑、使用起来很有趣的现代语言。
  3. 多种范式。没有一种范式适用于每个项目,甚至是项目中的每个小子问题。
  4. 一种有趣的语言,它实际上会影响人们对编程的看法。

有一些重要:

  1. 表现。如果性能不错,那就太好了,但是当性能是真正的优先事项时,我将使用 D 代替。
  2. 有据可查。

不重要:

  1. 社区规模、图书馆可用性等。这些都不是语言本身的特征,而且都可以很快改变。
  2. 工作可用性。我不是一个全职的专业程序员。我是一名研究生,编程与我的研究密切相关。
  3. 任何主要设计用于由一百万个代码猴子处理的大型项目的功能。
0 投票
8 回答
39895 浏览

ruby - 在 Ruby 中为类添加实例变量

如何在运行时将实例变量添加到定义的类,然后从类外部获取和设置其值?

我正在寻找一种元编程解决方案,它允许我在运行时修改类实例,而不是修改最初定义类的源代码。一些解决方案解释了如何在类定义中声明实例变量,但这不是我要问的。

0 投票
3 回答
7952 浏览

ruby - Ruby 中的“为”是什么

在红宝石中:

是相同的:

for不是内核方法:

  • for红宝石中的“”到底是什么
  • 有没有办法使用其他关键字来做类似的事情?

就像是:

映射到:

0 投票
6 回答
1133 浏览

reflection - 什么是反射?

我对 ASP.NET 很陌生。我来自 VB6/ASP(经典)/SQL Server 2000 背景。我正在阅读很多有关 Visual Studio 2008 的内容(已经安装并正在四处寻找)。我已经阅读了有关“反射”的内容,并希望有人尽可能地向我上面编写的技术的老开发人员解释,反射到底是什么以及我为什么要使用它......我很难得到我的头围绕着那个。谢谢!

0 投票
3 回答
38147 浏览

ruby - Ruby:define_method 与 def

作为一个编程练习,我编写了一个 Ruby 片段,它创建一个类,从该类实例化两个对象,对一个对象进行猴子补丁,并依靠 method_missing 对另一个对象进行猴子补丁。

这是交易。这按预期工作:

您会注意到我有一个method_missing 参数。我这样做是因为我希望使用 define_method 来动态创建具有适当名称的缺失方法。但是,它不起作用。事实上,即使使用带有静态名称的 define_method,如下所示:

以以下结果结束:

使错误消息更令人困惑的是,我只有一个论点method_missing...

0 投票
1 回答
649 浏览

ruby - Ruby 元编程问题

我正在查看 Ruby 日志记录库 Logging.logger 方法,并且在 github 的源代码中有一个与这段代码相关的问题:

我知道类 << logger 向 logger 对象打开了 eigen/meta/singleton 类以添加实例特定的关闭方法。但是,我不确定“class << self; undef :close; end” 的作用和目的。谁能告诉我这是什么意思?

0 投票
8 回答
29283 浏览

javascript - 如何在 JavaScript 中模拟宏?

我知道 JavaScript 不支持宏(Lisp 风格的),但我想知道是否有人有解决方案来模拟宏?我用谷歌搜索了它,其中一种解决方案建议使用eval(),但正如他所说,成本会很高。

他们真的不必很花哨。我只想和他们做一些简单的事情。而且它不应该使调试变得更加困难:)

0 投票
2 回答
674 浏览

macros - Defining operators in Boo

I'm looking to move some of my lighter weight metaprogramming from Nemerle to Boo and I'm trying to figure out how to define custom operators. For example, I can do the following in Nemerle:

Then these two are equivalent:

I can't find a way of doing this in Boo -- any ideas?

0 投票
5 回答
70583 浏览

ruby - 获取当前执行方法的名称

$0是顶级 Ruby 程序的变量,但当前方法是否存在变量?

0 投票
8 回答
1306 浏览

c++ - 程序员需要 C++ 元模板知识吗?

以我的经验,元模板真的很有趣(当你的编译器兼容时),并且可以提供良好的性能提升,幸运的是,我周围都是经验丰富的 C++ 程序员,他们也熟悉元模板,但偶尔会有新的开发人员到来并且可以'不要对我们使用的一些元模板技巧(主要是 Andrei Alenxandrescu 的东西)做出正面或反面,持续几周,直到他得到适当的启动。

所以我想知道其他 C++ 程序员的情况如何?元模板编程是否应该是 C++ 程序员应该“必须”知道的(当然不包括入门级学生)?

编辑:注意我的问题与生产代码有关,而不是很少的样本或原型