好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Ruby中的變量學習總結

Ruby中的變量學習總結

熱門標簽:柯城手機地圖如何做地圖標注 淮安自動外呼系統(tǒng)供應商 巫師3地圖標注魔力之所 天津外呼系統(tǒng)怎么收費 征服者企業(yè)地圖標注 AI電銷機器人 線路 漯河電銷 外呼線路從哪里出來的 中牟外呼系統(tǒng)違法嗎

Ruby中的變量有幾種形式,分別是局部變量、實例變量、類變量、全局變量,對于初學者來說,常常容易搞混,尤其像本人這種做java的,理解起來還是頭痛,經(jīng)過仔細辨別學習,將這幾種變量的差異及使用場景總結如下:

一、命名方式

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

二、作用范圍

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

復制代碼 代碼如下:

class Account
 user=User.new
 def myMethod
  puts user.name   #調用發(fā)生錯誤,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 BA
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!'

全局變量:如$user,盡量少使用 ,作用于整個程序的生命周期,常駐內存,過量使用會引起性能下降,內存溢出,Ruby內置一些全局變量,獲取相關數(shù)據(jù)十分方便,如$0'代表的是所運行應用程序的文件名稱,‘$:'代表的是默認的文件搜索路徑;'$$'代表的是 ruby 程序的進程 id。

您可能感興趣的文章:
  • Ruby的基本語法學習總結
  • Ruby中的方法(函數(shù))學習總結
  • 詳解Ruby中的異常

標簽:南昌 克拉瑪依 大慶 棗莊 內江 西雙版納 甘孜 河池

巨人網(wǎng)絡通訊聲明:本文標題《Ruby中的變量學習總結》,本文關鍵詞  Ruby,中的,變量,學習,總結,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ruby中的變量學習總結》相關的同類信息!
  • 本頁收集關于Ruby中的變量學習總結的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 国产又粗又猛又色又黃| 英语课代表让我c免费观看| 国产AV无码亚洲AV毛骗全下架| 掌心影院手机在线观看| 黄的网站带小说| 天天向上免费观看影院日本| 精品人妻无码一区二区出白浆潮喷| 甜性涩爱HD中字高清在线播放| 嗯啊啊用力| 久久久久久精品一级毛片免费按摩| 120秒午夜体验区5次软件特色| 成年免费大片黄在线观看视频| 性色AV久久99园产来青品小说| 日本人和亚洲人jzz| 女人扒开双腿让男人桶| 老师喂我乳| 西西人体大胆裸体A片GIF| 欧美综合缴情五月丁香六月婷| 午夜亚洲国产日本电影一区二区三区| 欧美艳星kagneyiynn| 欧美另类丰满熟妇乱XXXXX| 成人女人A片免费蕾丝网站| 免费视频禁止18以下禁止观看| 夜夜爱夜夜爽| 午夜在线播放视频| 啊轻点灬太粗嗯太深了快纯读 | 疯狂伦交大片| 嗯啊嗯啊轻点| 一级A片又大又黄又爽| 强揉爆乳女教师2| 亚洲香蕉一区二区三区在线观看| 人人干天天干| 欧美日韩久久久A片一级试看网站| 日韩在线一区二区| 欧美Av欧洲Av天堂亚洲Av片| 超级教师电影免费观看| 免费一级无码婬片A片毛片| 中国xxnxx免费| ktv裸妇荡舞表演| 日韩久久久精品中文字幕| 337p粉嫩大胆色噜噜噜视频|