2007-07-14
Ruby语法中setter的实现
关键字: ruby
粗略翻了下Ruby的介绍,晕,Ruby里setter居然是这样搞出来的:
调用时这样:
看上去很直观吧,比Java里的user1.setName("test")简洁多了,很像C#的Property。实质上呢,这里只有普通的Ruby语法,仅仅用到了几种“魔术”:
Ruby的方法命名可以用问号,感叹号,等号结尾(?,!,=),所以这里调用的是"name="这样一个方法
Ruby调用方法可以不带括号,也就是说,下面两句是等同的:
至于
为什么也可以使用(等号前多了个空格),还是没有搞明白。
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'
为什么也可以使用(等号前多了个空格),还是没有搞明白。
发表评论
- 浏览: 24554 次
- 性别:

- 来自: 成都

- 详细资料
搜索本博客
最新评论
-
代码统计工具COLC
刚下载用过,感觉不错。只是不知道,最后两列 scale 3rd gen. e ...
-- by jacklondon -
dojo Quick Start
建议不要沉迷于他 用多了非常非常慢的
-- by careprad -
dojo Quick Start
fyting.yang{{在}}gmail.com,在我的个人资料里有的呵呵。
-- by fyting -
dojo Quick Start
fyting 写道commond 写道 function foo() { con ...
-- by commond -
dojo Quick Start
commond 写道 function foo() { console.debu ...
-- by fyting






评论排行榜