2007-07-14

Ruby语法中setter的实现

关键字: ruby
粗略翻了下Ruby的介绍,晕,Ruby里setter居然是这样搞出来的:
class User
  def name=(myname)
    @name = myname
  end
end

user1 = User.new("aaa")

调用时这样:
user1.name='test1'

看上去很直观吧,比Java里的user1.setName("test")简洁多了,很像C#的Property。实质上呢,这里只有普通的Ruby语法,仅仅用到了几种“魔术”:
Ruby的方法命名可以用问号,感叹号,等号结尾(?,!,=),所以这里调用的是"name="这样一个方法
Ruby调用方法可以不带括号,也就是说,下面两句是等同的:
user1.name= ('test1')
user1.name= 'test1'

至于
user1.name = 'test1'

为什么也可以使用(等号前多了个空格),还是没有搞明白。
评论
发表评论

您还没有登录,请登录后发表评论

fyting
搜索本博客
存档
最新评论