麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Ruby > 正文

總結Ruby中的變量

2020-02-24 15:37:44
字體:
來源:轉載
供稿:網友

Ruby中的變量有幾種形式,有局部變量、實例變量、類變量和全局變量等等,對于初學者來說,他們經常會感覺到困惑,特別是對于像小編這樣的,都會讓我們很難理解,今天武林技術頻道小編和你分享總結Ruby中的變量,一起來看看吧!

一、命名方式

1.局部變量:小寫字母或者“_”開頭,如user,解釋器解釋到時才開始在內存中存在,一個良好的習慣是在進行變量定義時用nil進行賦值初始化,否則會出現類似undefined local variable or method `z'的錯誤;
2.實例變量:@開頭,如@user,默認初始化為nil,此處的“實例”指的是類對象本身,或者類的對象;
3.類變量:@@開頭,如@@user,需要進行初始化后才能調用,否則會出現類似uninitialized class variable @@user in Account的錯誤;
4.全局變量:$開頭,如$user,默認初始化為nil;

二、作用范圍

局部變量:如user,只作用于本類、本方法或本模塊內,不同于java語言習慣,在類中定義的變量,可以在類的方法中進行調用,Ruby中的局部變量,類中定義的,只能在類中訪問,其子類、方法、內部類中都無法調用,如下邊示例代碼:

復制代碼 代碼如下:

class Account
?user=User.new
?def myMethod
??puts user.name?? #調用發生錯誤,user未定義
?end
end

?

實例變量:如@user,有點類似于java中POJO類的成員變量,類中隨意訪問,類外通過方法訪問,作用于本實例對象范圍內或本類的實例對象范圍內(這句話有點繞口,請注意分清楚類對象本身[Account,是Class類的一個對象]和 類實例化后的對象[Account.new,是Account類的一個對象]),這是兩個相互獨立的域,定義在Account中的變量不能在Account.new中訪問,反之亦然,如下邊示例代碼:

?

復制代碼 代碼如下:

class A?
? #類的類實例變量在訪問前可以賦值也可以不賦值,不賦值就是nil?
? @alpha='This is @alpha/' value!'
?
? def A.look
? ?puts "#@alpha"?
? end
? def look?
? ?puts "#@alpha"?
? end
end?

?

A.look??????? #輸出:'This is @alpha' value!''
A.new.look??? #輸出:''

?

再看如下代碼:

?

復制代碼 代碼如下:

class A?
? #類的類實例變量在訪問前可以賦值也可以不賦值,不賦值就是nil?
? @alpha='This is @alpha/' value!'

?

? def A.look
? ?puts "#@alpha"?
? end
? def look
? ?@alpha='This is @alpha/' value from look!'
? ?puts "#@alpha"?
? end
? def look_again?
? ?puts "#@alpha"?
? end
end?

A.look??????? #輸出:'This is @alpha' value!''
a=A.new
a.look??????? #輸出:'This is @alpha' value from look!'
a.look_again? #輸出:'This is @alpha' value from look!'

?

可見,@alpha='This is @alpha/' value!'是定義在類對象本身的實例變量,@alpha='This is @alpha/' value from look!'是定義在類實例化后的對象中的實例變量,另外,使用實例變量時還應該注意一下幾點:

1、實例變量不管是在類中定義,還是在方法中定義,其都屬于類,而不是方法
2、實例變量只存在于實例范圍,不可在子類中引用或者賦值
3、實例變量永遠都是Private的,不能暴露為Public,外部訪問通過方法進行,可以使用attr_accessor簡便定義

類變量:如@@user,作用于類的所有范圍,所有實例對象共享,包括子類及其實例對象,類變量通過Protected聲明的,如下邊示例代碼:

復制代碼 代碼如下:

class A?
? #類的類實例變量在訪問前可以賦值也可以不賦值,不賦值就是nil?
? @@alpha='This is @alpha/' value!'

?

? def A.look
? ?puts "#@@alpha"?
? end
? def look
? ?puts "#@@alpha"?
? end
? def look_again?
? ?puts "#@@alpha"?
? end
end?

class B<A
end

A.look??????? #輸出:'This is @alpha' value!'
B.look??????? #輸出:'This is @alpha' value!'
a=A.new
a.look??????? #輸出:'This is @alpha' value!'
a.look_again? #輸出:'This is @alpha' value!'
b=B.new
b.look??????? #輸出:'This is @alpha' value!'
b.look_again? #輸出:'This is @alpha' value!'

以上就是關于總結Ruby中的變量介紹,要想知道更多的技術知識,大家需要去做更多的了解,武林技術頻道是你的滿意選擇,大家可以放心閱覽。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 欧美成人一区二区三区 | 精品在线观看一区二区 | 国产一区二区三区网站 | 国产一区二区三区精品在线观看 | 91福利免费视频 | 日本一区二区免费在线观看 | 91精品国产综合久久婷婷香蕉 | 日韩视频www | 激情小说另类 | 精品亚洲福利一区二区 | 亚洲免费在线看 | 久久中文免费 | 免费一级毛片在线播放视频 | 亚洲精品一区二区三区大胸 | 国产精品久久久乱弄 | 欧美一级电影网站 | 91久久久久久亚洲精品禁果 | 有兽焉免费动画 | 日韩欧美视频一区二区三区 | 91精品国产九九九久久久亚洲 | 嗯~啊~用力~高h | 亚洲国产成人久久成人52 | 久久久久久久久久网站 | 天堂成人一区二区三区 | 精品国产91久久久久久久妲己 | 日本高清电影在线播放 | 一级大黄毛片免费观看 | free台湾极品性hd | 精品一区二区三区中文字幕 | 国产1区2区在线 | 在线成人免费av | 一区二区三区日韩 | 俄罗斯16一20sex牲色另类 | 91福利社在线 | 91色爱| 成人短视频在线观看免费 | 噜噜噜躁狠狠躁狠狠精品视频 | 日日操日日操 | 黄色影院av | 色综合久久99 | 国产va在线观看 |