A.5 变量和它的作用域---(1)
查看( 85 ) /
评论( 9 )
TAG:
-
libaoming发布于2008-06-13 14:29:14
-
看来效果还不错,大家都没啥问题。
那就继续~~
-
eipeng发布于2008-06-17 13:58:16
-
感谢.....
-
黑马发布于2008-06-18 14:00:30
-
补充一个,新手经常犯难的地方
class A
@b=1
end
如例,在类中定义了一个实例变量。我们称“类的实例变量”(注意,平时所用的实例变量是是对象的实例变量),要想访问到它,我们可以这么办,但是为什么,请大家先思考,后期给上原理分析:
class A
class <<self
attr_reader :b
end
end
puts A.b --> 1
-
黑马发布于2008-06-19 14:08:58
-
对上面的原因进行分析
class <<self 表示创建一个类,与self这个类关联,self还是表示自己,那也就是说为自己类建了一个虚拟类。
Ruby代码的定义也是可以执行的。也是有执行环境的。
因为class定义时的上下文环境实际上是Class(在定义体中puts self.class就知道了),而Class类的父类是Module,因此在定义体中就可以调用祖先类--Module中的方法 attr_reader,用它定义了对@b的访问,使得我们可以读出@b的值。
那么有人会想到。如果在class A中定义一个方法,可以返回@b的值嘛?答案是不可以的,你可以试试,因为类的实例变量是定义在metaclass中的,所以我们要在metaclass中定议访问函数。如果你理解到这,基本上明白ruby的类的内部机制了
-
wosmvp发布于2008-06-22 10:31:48
-
嗯,谢谢wtb,学习了

-
jluxzp发布于2008-07-25 14:26:43
-
如果你理解到这,基本上明白ruby的类的内部机制了
晕了
-
alanyuqiang发布于2008-07-26 02:18:04
-
QUOTE:
原帖由 jluxzp 于 2008-7-25 14:26 发表
晕什么?难道不是?理解到这些了,说明你对ruby的理解算深刻了
如果你理解到这,基本上明白ruby的类的内部机制了
晕了
-
weywong发布于2008-08-26 21:09:03
-
看了黑马兄的解释,我是这样理解的,不知道对不对:
class A
class <<self
attr_reader :b
end
end
就这段代码而言,A既是一个class,又是Class这个class的实例;self出现的上下文决定它指代的是A;所以上面这段代码为Class这个class的实例A加了一个attr_reader。而调用
puts A.b
的时候,A代表的也是Class这个class的实例。
-
weywong发布于2008-08-26 21:25:04
-
关于class <<我不太懂。但我把class <<后的标识(如self或者别的什么)理解为某个类的实例(如果它本身就是一个类,那就是Class的实例),然后class <<的作用就相当于打开这个类,追加(只针对这个实例的)定义。
标题搜索
日历
|
|||||||||
| 日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
| 1 | |||||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | |||
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | |||
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | |||
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | |||
| 30 | |||||||||
我的存档
数据统计
- 访问量: 44
- 日志数: 19
- 建立时间: 2008-06-11
- 更新时间: 2008-06-11

