解释什么是Ruby元编程的示例

时间:2018-12-14 08:55:30

标签: ruby metaprogramming

元编程一词使我感到困惑。诸如“编写程序的程序”之类的词根本没有帮助,我找不到很好的例子。我只有一个模糊的想法,那就是将方法添加到类定义中。但是许多其他语言也可以做到这一点,例如,Objective-C具有Method swizzling(通过更改Objective-C Runtime)。

为什么Ruby为什么这么强调元编程?有人可以给我一些使用Ruby进行元编程的例子吗?这有什么用途?它可以解决什么问题?

1 个答案:

答案 0 :(得分:2)

您应该查看method_missing上的一些资源。这是一个使用它制作dynamic methods的好例子。您还可以看到一些shortfalls and things to remember。就个人而言,我很少在日常工作中使用元编程。使用它的一个很好的原因可能是为库创建接口或DSL。通常,以创建接口为主题可能会更好地为您服务,并且您将逐步学习有关元编程的知识。

编辑:我没有回答所有问题。

我不能为红宝石社区中的每个人说话,但是原则上这很酷,实际上有点吓人,要把彼得·帕克叔叔的话排队。红宝石几乎可以随时修改现有的类。 Monkeypatching是您可以执行的另一项危险操作。本质上,ruby类不是最终的。您可以打开它们进行备份并写入它们。在javascript中考虑如何写数组类的原型以直接在数组上创建更多函数。