问题标签 [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 回答
937 浏览

ruby - 仅扩展一个块调用

我有一个包含一些私有属性的类。我想做的是为这些动态添加一些设置器,仅用于执行特定块。

我希望能够做到的示例:

编辑:感谢迄今为止的精彩回答。我澄清了这个问题,因为我实际上需要在类本身中定义可能与模块中定义的设置器冲突的属性读取器。我在发布问题时忘记了这部分。(来晚了^^)

澄清:这个类是供 DSL 编写配置文件的。它针对的是非开发人员,因此运营商越少越好。

我目前使用阻止的代理类来实现这一点,但为了设置值instance_eval我必须搞砸,我不喜欢它。instance_variable_set我只是在尝试另一种方法,看看是否可以使我的代码更具可读性。

0 投票
9 回答
2465 浏览

c++ - 何时/为什么(如果有的话)我应该考虑进行通用编程/元编程

恕我直言,哎呀,设计模式很有意义,我已经能够实际应用它们。

但是当谈到现代 C++ 类型的“通用编程/元编程” 时,我感到很困惑。

——它是一种新的编程/设计范式吗?

——是否仅限于“图书馆开发”?如果不是,什么设计/编码情况需要使用元编程/通用编程。

-- 使用模板是否意味着我在做泛型编程?

我在这个话题上搜索了很多,但没有完全掌握大局。另见这篇文章


在阅读了下面的讨论之后,到目前为止,我确信(可能仍然不正确):

a) 通用编程和元编程是两个不同的概念。

0 投票
10 回答
5234 浏览

c++ - 什么是元编程?

关于这个问题,有人可以解释并发布元编程的示例代码吗?我用谷歌搜索了这个词,但没有找到任何例子来说服我它可以有任何实际用途。

同样,Qt 的元对象系统是元编程的一种形式吗?

jrh

0 投票
10 回答
55891 浏览

c++ - C++ SFINAE 示例?

我想进入更多的模板元编程。我知道 SFINAE 代表“替代失败不是错误”。但是有人可以告诉我 SFINAE 的好用处吗?

0 投票
1 回答
1122 浏览

python - Django 中使用的动态语言特性和元编程

有没有关于 Django 使用的 Python 的动态语言和元编程特性的优秀总结文章?或者我们可以在这里建造它吗?将其设置为 wiki 样式的条目。

0 投票
2 回答
2962 浏览

ruby - Ruby:打印任意方法的代码(并在上下文中执行)

我想做类似以下的事情:

如何编写 print_method 和 foo.exec 代码?最好,它们应该适用于任何任意方法,而无需先验地知道它们可能恰好是从哪里定义或来源的。

  • 是的,我知道方法和块并不完全相同。但这更接近 yield 和 call 通常需要的值;我不知道更好的解决方案。
0 投票
5 回答
9263 浏览

python - 如何在 Python 中找出方法的数量

我想找出 Python 中方法的数量(它接收的参数数量)。现在我正在这样做:

我希望能够做到这一点:

更新:现在上述函数因内置类型而失败,对此的任何帮助也将不胜感激:

0 投票
4 回答
2165 浏览

ruby - 为什么 Ruby 不自动执行 to_s?

我有一个作者类:

定义to_s允许我做puts Author.first,但不是puts Author.first.rjust(10)

to_s在这种情况下,如果 Ruby 在 string 方法之前自动尝试,不是更好吗?有没有办法得到这种行为?

0 投票
6 回答
2486 浏览

c++ - 我可以在这里使用奇怪重复的模板模式(C++)吗?

我有一个可以简化为这样的 C++ 应用程序:

我的应用程序对性能至关重要。集合中通常有数千个小部件。从(其中有几十个)派生的类AbstractWidget通常不会覆盖许多虚函数。那些被覆盖的通常具有非常快的实现。

鉴于此,我觉得我可以通过一些巧妙的元编程来优化我的系统。目标是利用函数内联并避免虚函数调用,同时保持代码的可管理性。我已经研究了奇怪重复出现的模板模式(请参阅此处进行描述)。这似乎几乎可以满足我的要求,但并不完全。

有什么方法可以让 CRTP 在这里为我工作吗?或者,还有其他任何人能想到的聪明的解决方案吗?

0 投票
1 回答
832 浏览

ruby-on-rails - 这种不推荐使用的方法是如何工作的?

我试图理解这个电话:

它使用这种弃用的方法:

我不太了解这里使用的元编程。但是,这只是别名new_record?方法的另一种方式吗?实际上,new_record?它仍然可用,但在您使用它时会发出警告?有人想解释一下这是如何工作的吗?