2007-02-14
ruby学习笔记(1)--访问对象属性
在ruby中,运算符操作实际上也是方法调用,于是,我们就可以避免繁琐的get,set方法了:
但是如果属性比较多的话,又会出现一大堆方法,这自然是ruby所不取的。于是又有了如下的简化:
或者进一步简化成:
这样我们就可以来进行方法调用,如下所示:
但是如果要在对象内部对其属性进行访问的话,就不能用attr_writer了,它会默认的把表达式左侧的变量当作局部变量来处理,而非对象属性。解决的方法有两种,一种是如initialize方法那样,使用@name来访问,还有一种是使用self.name来访问,如下所示:
- class Book
- def initialize(name)
- @name =name
- end
- def name
- @name
- end
- def name=(new_name)
- @name=new_name
- end
- end
但是如果属性比较多的话,又会出现一大堆方法,这自然是ruby所不取的。于是又有了如下的简化:
- class Book
- attr_reader :name
- attr_writer :name
- def initialize(name)
- @name=name
- end
- end
或者进一步简化成:
- class Book
- attr_accessor :name
- def initialize(name)
- @name=name
- end
- end
这样我们就可以来进行方法调用,如下所示:
- book = Book.new("Ruby")
- puts book.name
- book.name="Python"
- puts book.name
但是如果要在对象内部对其属性进行访问的话,就不能用attr_writer了,它会默认的把表达式左侧的变量当作局部变量来处理,而非对象属性。解决的方法有两种,一种是如initialize方法那样,使用@name来访问,还有一种是使用self.name来访问,如下所示:
- class Book
- attr_accessor :name
- def initialize(name)
- @name =name
- end
- def refresh
- self.name="new book"
- end
- end
- 12:07
- 浏览 (1163)
- 论坛浏览 (1183)
- 评论 (0)
- 分类: ruby
- 相关推荐
发表评论
该博客是同时发布到论坛的,无法评论在论坛已被锁定的帖子
我的相册
sina
共 3 张
共 3 张
最近加入圈子
链接
最新评论
-
羡慕,那你也加入啊
和我的拒信一模一样。哎
-- by niwtsew -
web环境下开发quartz简易 ...
你写的很好。我的是在rcp下面是用quartz还得自己摸索..........
-- by futionbai -
Starting Struts2中文版已 ...
呵呵,希望大家可以喜欢
-- by dearwolf -
Starting Struts2中文版已 ...
正在看这本书!! 哈哈
-- by kanokano -
CSDN英雄大会上,跟苏某翻 ...
我只想到。。。这么年轻就有仔了,好可怜阿。。。。
-- by akane







评论排行榜