ruby系列教材(13):Attributes, Instance Variables, and Methods

来源:百度文库 编辑:神马文学网 时间:2024/04/29 13:45:49
假如你是一个C++,Java语言的学习者,到这里你一定会惊讶,因为Attributes是一种method!至少笔者之前的观点,一直觉得Attributes应该是描述一种状态的变量,实际上Ruby里面不这么认为,至少《programming ruby》不这么认为:
Attributes是一个method,它是用于access external state ,什么是 external state?
一个class里面包含有很多instance variables,他们的集合表示着不同的states,有一些instance variables无法被外部访问,它们组成的集合,我们称之为 internal state,相反称之为external state(class state后面会提到,虽然也可以被外部访问,但是我们不认为它属于external state),Attributes为external state提供了访问的可能,也就是通过Attributes可以访问到那些让你访问的instance variables,正因为这种可访问的instance variables和Attributes的紧密联系,使得人们把他们混为一个概念。我们前面说道的virtual attributes,注意,不要以为ruby里面有虚变量,其实应该是虚方法,当然这里又和C++,JAVA不一样了。这些概念的混乱现象,各个语言的理解不同,给学习者带来了不便,希望读者能于我共同探讨这个问题