Ruby 入门级元编程例子

chenge · 2014年05月24日 · 最后由 keating 回复于 2014年05月24日 · 2280 次阅读

attr_accessor 的实现原理,术语叫类宏。


module MyAttr
  def my_reader(attr_name)
    define_method(attr_name) do
      instance_variable_get("@"+attr_name.to_s)
    end
  end
end

class Person
  extend MyAttr
  my_reader :name

  def initialize(name)
    @name = name
  end
end

person = Person.new("Mortimer")
p person.name
#=> "Mortimer"

原文来自本周的 rubyweekly 推荐。

http://monkeyandcrow.com/blog/metaruby_an_ounce_of_metaprogramming/?utm_source=rubyweekly&utm_medium=email

简单的说就是建立字符串和 rvm 内部数据之间的通道。。。

这个叫 attr_reader 还差不多...

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