【发布时间】:2017-06-15 09:16:49
【问题描述】:
我目前正在学习元编程。我猜 Ruby on Rails 大量使用元编程。这是我到目前为止所理解的。
- 宏:发生在编译时,使用代码生成代码(即 Rails 使用 attr_reader 自动设置 getter)
- 反射:发生在运行时(我读到反射使用它自己的语言作为元语言,但不确定这是什么意思)
- 元编程使用程序作为数据类型来生成代码;宏和反射在某种意义上是元编程技术。
我总共有 3 个问题。
- 我很难理解反射是什么。有人可以通过可能适用的例子给我一个很好的定义吗?
- 宏和反射有什么区别
- 我是否可以将宏和反射视为元编程的子集,因为宏和元编程的定义与我几乎相同。
如果您能在使用 Ruby/Rails 时解释这一点,那将对我有很大帮助。谢谢!
【问题讨论】:
-
第一点不是问题,第二点已经自己回答过了,第三点只能自己回答,一旦你有实际的编程任务(而不是“我想做元编程态度”)…
-
如前所述,这取决于您要解决的实际任务。对于其中一些人来说,可能很清楚哪种方法更适合,而对于另一些人来说,这可能是主观的,或者取决于个人关注点驱动的权衡。
-
除了你的问题不清楚,也太宽泛之外,还有一个比较实际的问题是Ruby没有宏,那么你希望我们如何使用Ruby来解释宏?
-
是的,我假设这个问题非常广泛,但这是唯一的描述方式,因为我刚刚学习了它的概念,不知道如何围绕这个主题提出详细的问题!我将自学更多,以提出更具体的问题。
标签: ruby-on-rails ruby reflection macros