Ruby 入门级元编程例子

chenge · May 24, 2014 · Last by keating replied at May 24, 2014 · 2280 hits

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 还差不多...

You need to Sign in before reply, if you don't have an account, please Sign up first.