假如你是一個(gè)C++,Java語(yǔ)言的學(xué)習者,到這里你一定會(huì )驚訝,因為Attributes是一種method!至少筆者之前的觀(guān)點(diǎn),一直覺(jué)得Attributes應該是描述一種狀態(tài)的變量,實(shí)際上Ruby里面不這么認為,至少《programming ruby》不這么認為:
Attributes是一個(gè)method,它是用于access external state ,什么是 external state?
一個(gè)class里面包含有很多instance variables,他們的集合表示著(zhù)不同的states,有一些instance variables無(wú)法被外部訪(fǎng)問(wèn),它們組成的集合,我們稱(chēng)之為 internal state,相反稱(chēng)之為external state(class state后面會(huì )提到,雖然也可以被外部訪(fǎng)問(wèn),但是我們不認為它屬于external state),Attributes為external state提供了訪(fǎng)問(wèn)的可能,也就是通過(guò)Attributes可以訪(fǎng)問(wèn)到那些讓你訪(fǎng)問(wèn)的instance variables,正因為這種可訪(fǎng)問(wèn)的instance variables和Attributes的緊密聯(lián)系,使得人們把他們混為一個(gè)概念。我們前面說(shuō)道的virtual attributes,注意,不要以為ruby里面有虛變量,其實(shí)應該是虛方法,當然這里又和C++,JAVA不一樣了。這些概念的混亂現象,各個(gè)語(yǔ)言的理解不同,給學(xué)習者帶來(lái)了不便,希望讀者能于我共同探討這個(gè)問(wèn)題
聯(lián)系客服