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

解释Ruby元编程是什么的示例,ruby,metaprogramming,Ruby,Metaprogramming,元编程这个术语使我感到困惑。像“编写程序的程序”这样的词一点帮助都没有,我也找不到好的例子。我只是有一个模糊的想法,它将方法添加到类定义中。但许多其他语言都可以做到这一点,例如,Objective-C有方法Swizzing(通过更改) 为什么Ruby如此强调元编程?有人能给我一些Ruby中元编程的例子吗?它是用来干什么的?它解决了什么样的问题?您应该查看有关方法的一些参考资料。这是一个很好的例子,使用它来制作。你也可以看到一些。就我个人而言,我很少在日常工作中使用元编程。使用它的一个很好的理由可

元编程这个术语使我感到困惑。像“编写程序的程序”这样的词一点帮助都没有,我也找不到好的例子。我只是有一个模糊的想法,它将方法添加到类定义中。但许多其他语言都可以做到这一点,例如,Objective-C有
方法Swizzing
(通过更改)


为什么Ruby如此强调元编程?有人能给我一些Ruby中元编程的例子吗?它是用来干什么的?它解决了什么样的问题?

您应该查看有关
方法的一些参考资料。这是一个很好的例子,使用它来制作。你也可以看到一些。就我个人而言,我很少在日常工作中使用元编程。使用它的一个很好的理由可能是为库创建接口或DSL。一般来说,通过查看创建接口的主题,您可能会得到更好的服务,并且您将在此过程中学习元编程的相关知识

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


我不能代表ruby社区中的每个人说话,但这在原则上是很酷的,在实践中有点吓人,请排队引用Peter Parker叔叔的话。在ruby中,几乎所有现有类都可以随时修改。这是你能做的另一件危险的事。本质上,ruby类不是最终的。你可以把它们打开并给它们写信。在javascript中考虑如何编写数组类的原型,以便直接在数组上创建更多函数。

您应该查看
方法\u missing
上的一些参考资料。这是一个很好的例子,使用它来制作。你也可以看到一些。就我个人而言,我很少在日常工作中使用元编程。使用它的一个很好的理由可能是为库创建接口或DSL。一般来说,通过查看创建接口的主题,您可能会得到更好的服务,并且您将在此过程中学习元编程的相关知识

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


我不能代表ruby社区中的每个人说话,但这在原则上是很酷的,在实践中有点吓人,请排队引用Peter Parker叔叔的话。在ruby中,几乎所有现有类都可以随时修改。这是你能做的另一件危险的事。本质上,ruby类不是最终的。你可以把它们打开并给它们写信。在javascript中考虑如何编写数组类的原型,以便直接在数组上创建更多函数。

Duckduckgo选择“Ruby DSL”。因此,主要强调的是广泛的DSL功能,例如Rails是90%的DSL。互联网上有大量资源解释元编程。对于“请给我举个例子”这样的一般性问题,我看不出一个随机的StackOverflow答案如何比大量其他在线材料更有用。你能推荐一些链接吗?我可以结束我的问题吗?“Ruby为什么如此强调元编程?”——这是一个主观问题。Ruby提供了使用元编程技术的工具,但语言本身并不“强调”任何东西。某些由固执己见的作者编写的库/框架大量使用这些工具。这可以说是一件好事(例如,在rails中,每个数据库列都有动态创建的模型方法),也可以说是一件坏事(例如,混淆/不必要地使用
method\u missing
madness)。“有人能给我一些Ruby中元编程的例子吗?它的用途是什么?”——
define\u method
类评估
响应?
方法缺失
超类
实例评估
实例执行
。。。。。。。用谷歌搜索这些术语中的任何一个,你都会发现许多用例。总的来说,这个想法是为了增加代码的灵活性,并自动生成“Ruby DSL”的样板代码/Duckduckgo。因此,主要强调的是广泛的DSL功能,例如Rails是90%的DSL。互联网上有一百万个资源解释元编程。对于“请给我举个例子”这样的一般性问题,我看不出一个随机的StackOverflow答案如何比大量其他在线材料更有用。你能推荐一些链接吗?我可以结束我的问题吗?“Ruby为什么如此强调元编程?”——这是一个主观问题。Ruby提供了使用元编程技术的工具,但语言本身并不“强调”任何东西。某些由固执己见的作者编写的库/框架大量使用这些工具。这可以说是一件好事(例如,在rails中,每个数据库列都有动态创建的模型方法),也可以说是一件坏事(例如,混淆/不必要地使用
method\u missing
madness)。“有人能给我一些Ruby中元编程的例子吗?它的用途是什么?”——
define\u method
类评估
响应?
方法缺失
超类
实例评估
实例执行
。。。。。。。用谷歌搜索这些术语中的任何一个,你都会发现许多用例。一般来说,这个想法是增加代码的灵活性和自动生成样板代码/