Ruby 如何理解编程语言中的 meta 前缀?

musicflow · 2012年03月30日 · 最后由 WolfLee 回复于 2012年03月31日 · 4932 次阅读

我用 Ruby 做了个 IT 类的问答社区乐维 UP,很多 Ruby 的 information,贴过来跟大家分享。

问:在 Ruby 中经常提到的 meta-programming, meta-class, meta-information 等等,这里的 meta 是什么意思? { 'meta-programming' => '元编程' } ? 但是 “元” 是啥? ‘meta’ 前缀意在强调什么?

答:要理解元编程,首先要理解什么是 meta-class.

先来看一个例子:

class Person end

tom = Person.new

Person.class #=> Class
tom.class #=> Person
这个例子里,tom 是 Person 的实例,Person 是 Class 的实例。换句话说,ruby 里面所有的对象都是某一个类的实例,每一个实例都有一个 Class,在 Class 里面定义的方法对这个 Class 的所有实例有效。

。。。不支持 code 格式,还是贴链接吧:http://leweiup.com/questions/669

@musicflow 按一下 M 看 Markdown 帮助

class Person
end

tom = Person.new

Person.class #=> Class

tom.class #=> Person


摘自Pragmatic.Metaprogramming.Ruby,不过这里我也不确定到底 “Meta” 的中文 “元” 应该怎么解释。

Metaprogramming is writing code that writes code.
Metaprogramming is writing code that manipulates language constructs at runtime.

我也不理解这个中文的元,太牵强了。可以写代码的代码,这个比较认同。

meta pref. 在 ... 之后, 变换, 超越, 元, 介于 ... 之间

需要 登录 后方可回复, 如果你还没有账号请 注册新账号