瞎扯淡 菜逼学 Ruby,关于一个属性

devops · 2014年11月09日 · 最后由 devops 回复于 2014年11月09日 · 1925 次阅读

irb(main):012:0> class Redh irb(main):013:1> attr_accessor :names irb(main):014:1> def initialize(names) irb(main):015:2> @names = names irb(main):016:2> end irb(main):017:1> def names irb(main):018:2> puts "自定义的 names 函数!" irb(main):019:2> end irb(main):020:1> end => :names irb(main):021:0> Rchina = Redh.new("rb") => # irb(main):022:0> Rchina.names 自定义的 names 函数!

当时我想,attr_accessor :names 就是相当于自动创建了查询变数和修改变数的方法,我想如果自己手动又创建一个,到底是 Ruby 以哪个为准捏?从测试结果来看,好像是自己定义的为准,覆盖了的样子,就好像重新定义类中的同名函数会被覆盖一样,感觉 Ruby 好好玩~~睡觉!!!

变数变量 variable 函数参数 arguments 中文 attr_accessor 会自动创建两个 read write 方法

module Mod
  attr_accessor(:one, :two)
end
Mod.instance_methods.sort   #=> [:one, :one=, :two, :two=]

看代码顺序,后面定义的覆盖前面的

#1 楼 @liwei78 给力,学习了,不过现在我还没学到模组这一块,到后面再回头看看。

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