Ruby中類變量和實(shí)例變量的比較
1、類變量名以@@開始,一個(gè)類變量被這個(gè)類所有的實(shí)例對象共享;實(shí)例變量名以@開始,每個(gè)實(shí)例對象有各自不同的實(shí)例變量;
2、類變量在使用前必須初始化,否則在使用時(shí)會(huì)報(bào)錯(cuò);而實(shí)例變量如果沒有初始化,則使用時(shí)返回nil;
3、類變量是私有的,在類外無法直接訪問,可以通過類方法和實(shí)例方法訪問;
class B
@@number = 11
@@num = 22
def my_method #定義實(shí)例方法
puts @@number
end
def self.my_method #定義類方法
puts @@num
end
end
b = B.new()
puts b.my_method() #通過實(shí)例方法訪問類變量 => 11
puts B.my_method() #通過類方法訪問類變量 => 22
4、實(shí)例變量也是私有,無法在類外直接引用,可以通過類方法和實(shí)例方法訪問;
class B
@num = 11 #實(shí)際上這是“類的實(shí)例變量”
@test = 22
def my_method #定義實(shí)例方法
puts @num = 33 #跟前面定義的@num不在一個(gè)作用域 =>33
puts @test #跟前面定義的@test不在一個(gè)作用域里,未賦初值,因此返回nil
puts @new = 567 #在實(shí)例運(yùn)行my_method時(shí)才定義的實(shí)例變量 =>567
end
def self.my_method #定義類方法
puts @num #這里的@num就是前面定義過的@num =>11
puts @test # =>22
end
end
b = B.new()
b.my_method
puts "--------------------"
B.my_method
相關(guān)文章
Ruby實(shí)現(xiàn)命令行中查看函數(shù)源碼的方法
這篇文章主要介紹了Ruby實(shí)現(xiàn)命令行中查看函數(shù)源碼的方法,,需要的朋友可以參考下2014-07-07Ruby中的類Google Map/Reduce框架Skynet介紹
這篇文章主要介紹了Ruby中的類Google Map/Reduce框架Skynet介紹,Skynet是一款創(chuàng)建分布式應(yīng)用程序的框架,需要的朋友可以參考下2015-01-01Luhn算法學(xué)習(xí)及其Ruby版實(shí)現(xiàn)代碼示例
Luhn算法主要北用來進(jìn)行數(shù)字驗(yàn)證,尤其是卡號(hào)身份證號(hào)等,這里我們就來看一下Luhn算法學(xué)習(xí)及其Ruby版實(shí)現(xiàn)代碼示例:2016-05-05Ruby on Rails中Rack中間件的基礎(chǔ)學(xué)習(xí)教程
Rack是一個(gè)連接Ruby程序與服務(wù)器程序之間的中間件,甚至可以說Rails也是在Rack的基礎(chǔ)上建立起來的,這里我們就來為大家?guī)鞷uby on Rails中Rack中間件的基礎(chǔ)學(xué)習(xí)教程2016-06-06在Ruby程序中連接數(shù)據(jù)庫的詳細(xì)教程
這篇文章主要介紹了在Ruby程序中連接數(shù)據(jù)庫的詳細(xì)教程,包括介紹數(shù)據(jù)庫支持Ruby的接口等,是學(xué)習(xí)Ruby on Rails的基礎(chǔ),需要的朋友可以參考下2015-04-04介紹Ruby中的模塊與混合類型的相關(guān)知識(shí)
這篇文章主要介紹了Ruby中的模塊與混合類型的相關(guān)知識(shí),包括平常人們常說的多態(tài)與繼承等相關(guān)知識(shí)點(diǎn),需要的朋友可以參考下2015-05-05