4 回答

TA貢獻1884條經(jīng)驗 獲得超4個贊
以@開始的變量是【實例變量】,實例變量屬于特定的對象。
class Person
def initialize(name, gender, age)
@name = name
@gender = gender
@age = age
end
end
上面的例子中,@name, @gender,@age都是實例變量??梢栽陬惢蜃宇惖姆椒ㄖ幸脤嵗兞俊H粢蒙形幢怀跏蓟膶嵗兞康脑?,其值為nil。
【類變量】被一個類的所有實例對象共享,也可以被類方法訪問到。類變量名以‘@@’,開始,例如‘@@number’。和全局變量,實例變量不同,類變量在使用前必須初始化:
class Person
@@number = 0 #使用前必須有初值
def initialize(name, gender, age)
@name = name
@gender = gender
@age = age
@@number += 1
end
end
類變量是私有的,在類外無法直接訪問,你只能通過實例方法和類方法去訪問它。

TA貢獻1111條經(jīng)驗 獲得超0個贊
以@開始的變量是【實例變量】,實例變量屬于特定的對象。 class Person def initialize(name, gender, age) @name = name @gender = gender @age = age end end 上面的例子中,@name, @gender,@age都是實例變量。

TA貢獻1900條經(jīng)驗 獲得超5個贊
1、 模塊不能實例化,類不能include
2、如果模塊和類不在用一個文件中,如果要使用include,先使用require把文件引入
3、include不是簡單的將模塊的實例變量和方法拷貝到類中,而是建立一個由類到所包含模塊的引用
4、如果有多個include,將依次生成代理類,最后一個include的將是該類的直接超類,依次向上衍生
5、含有include的模塊或者類定義,可以訪問它所包含的常量,類變量和實例方法。如果一個模塊被包含,改模塊的常量,類變量,實例方法都被綁定到該類的一個匿名超類中,類的對象會響應發(fā)送給模塊實例方法的消息
6、模塊里可以定義一個initialize方法,當創(chuàng)建包括模塊的類的對象時,滿足一下條件之一,則模塊的該方法將被調用.
添加回答
舉報