How does attr_accessor work in Ruby on Rails
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What is attr_accessor in Ruby?
号
下面是示例代码:
1 2 3 4 5 6 7 8 9 10 11 | class User attr_accessor :name, :email def initialize(attributes = {}) @name = attributes[:name] @email = attributes[:email] end .... end |
当我这样做的时候
1 | example = User.new |
号
它创建了一个空用户,我可以通过
1 2 | example.name ="something" example.email ="something" |
我的问题是,为什么这件事有效?计算机如何知道example.name表示类中的@name变量?我假设name和:name是不同的,在代码中我们没有明确地告诉计算机example.name等同于:name符号。
1 2 3 4 5 6 7 | def field @field end def field=(value) @field = value end |
欢迎来到元编程的魔力。;)
1 2 3 | class User attr_accessor :name end |
等于此代码
1 2 3 4 5 6 7 8 9 | class User def name @name end def name=(val) @name = val end end |
号