亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Ruby > 正文

Ruby中的變量學習總結

2020-10-29 19:43:43
字體:
來源:轉載
供稿:網友

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

一、命名方式

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!'

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久成人av网站| 国产一区二区三区四区福利| 伊人久久久久久久久久久| 日韩视频欧美视频| 精品自在线视频| 26uuu另类亚洲欧美日本老年| 日韩av电影在线免费播放| 欧美午夜性色大片在线观看| 国产精品伦子伦免费视频| 久久国产加勒比精品无码| 成人高清视频观看www| 久久精品美女视频网站| 中文字幕亚洲天堂| 久久精品中文字幕免费mv| 欧美猛交免费看| 中文字幕在线看视频国产欧美| 一区二区三欧美| 国产精品热视频| 亚洲性线免费观看视频成熟| 国产精品久久久久久网站| 久久青草福利网站| 91精品视频在线免费观看| 国产女人精品视频| 成人免费视频a| 欧美亚洲另类制服自拍| 在线观看国产成人av片| 久久精品视频在线播放| 色综合久久精品亚洲国产| 日韩精品中文字幕在线观看| 欧美乱大交xxxxx另类电影| 中文字幕精品在线视频| www高清在线视频日韩欧美| 亚洲欧洲免费视频| 欧美黑人xxxⅹ高潮交| 成人精品aaaa网站| 2021久久精品国产99国产精品| 最好看的2019年中文视频| 亚洲肉体裸体xxxx137| 亚洲精品丝袜日韩| 最新国产成人av网站网址麻豆| 国产日韩综合一区二区性色av| 欧美成人午夜免费视在线看片| 午夜精品久久久久久久久久久久久| 亚洲淫片在线视频| 91精品国产免费久久久久久| 亚洲免费小视频| 伊人精品在线观看| 中文国产成人精品久久一| 成人xxxx视频| 久久亚洲私人国产精品va| 精品国产一区二区三区久久狼5月| 狠狠综合久久av一区二区小说| 日韩激情视频在线| 久久av资源网站| 久久久视频精品| 亚洲电影av在线| 日韩国产一区三区| 欧美黄色片在线观看| 日韩专区中文字幕| 久久精品视频播放| 成人免费激情视频| 欧美激情在线观看| 国产精品美女视频网站| 日韩欧美国产视频| 日韩一区二区三区国产| 2021久久精品国产99国产精品| 国产日韩精品在线观看| 人体精品一二三区| 亚洲国产第一页| 亚洲国产精品久久久久久| 欧美华人在线视频| 久久香蕉精品香蕉| 亚洲人午夜色婷婷| 国产精品永久免费视频| 国产视频精品一区二区三区| 欧美日本亚洲视频| 91精品视频观看| 91精品久久久久久久久久入口| 91精品视频在线| 久久久久久这里只有精品| 国产精品成人观看视频国产奇米| 日韩在线观看av| 亚洲色图25p| 91极品女神在线| 国产精品久久久久7777婷婷| 欧美日韩在线另类| 4k岛国日韩精品**专区| 性色av一区二区三区| 在线播放国产一区中文字幕剧情欧美| 岛国视频午夜一区免费在线观看| 亚洲国产成人久久综合| 96精品久久久久中文字幕| 日韩av网址在线| www.99久久热国产日韩欧美.com| 欧美高清电影在线看| 98视频在线噜噜噜国产| 久久精品青青大伊人av| 亚洲国产小视频在线观看| 久久免费精品日本久久中文字幕| 亚洲高清av在线| 亚洲综合在线播放| 欧美老少做受xxxx高潮| 91精品久久久久久久久久久久久久| 91精品久久久久久久久久入口| 国产精品亚洲一区二区三区| 日韩欧美极品在线观看| 精品毛片网大全| 中文字幕精品www乱入免费视频| 久久精品成人动漫| 国产亚洲aⅴaaaaaa毛片| 亚洲欧美日韩一区二区在线| 精品视频在线播放| 韩国日本不卡在线| 97不卡在线视频| 97色伦亚洲国产| 成人午夜一级二级三级| 欧美午夜丰满在线18影院| 亚洲iv一区二区三区| 91成品人片a无限观看| 热久久美女精品天天吊色| 日本久久久久亚洲中字幕| 性欧美xxxx| 久久精品99久久久香蕉| 久久久久日韩精品久久久男男| 九九热这里只有精品6| 欧美精品少妇videofree| 精品成人国产在线观看男人呻吟| 亚洲激情视频在线观看| 国产精品99久久久久久久久| 中文字幕精品av| 中文字幕欧美精品在线| 国产精品久久久久久久av电影| 国产成人免费91av在线| y97精品国产97久久久久久| 欧美精品在线免费播放| 久久躁日日躁aaaaxxxx| 久久亚洲电影天堂| 2020欧美日韩在线视频| 欧美一级电影在线| 亚洲国产精品一区二区久| 亚洲欧美资源在线| 欧美丰满少妇xxxxx| 国产精品一区二区在线| 亚洲va久久久噜噜噜久久天堂| 精品毛片网大全| 九九热最新视频//这里只有精品| 91精品国产91久久久久久吃药| 国产+人+亚洲| 亚洲美女免费精品视频在线观看| 懂色av中文一区二区三区天美| 国产成人综合一区二区三区| 欧美中文在线观看| 国产香蕉精品视频一区二区三区| 911国产网站尤物在线观看| 国产精品美女www爽爽爽视频| 亚洲tv在线观看| 亚洲专区中文字幕| 久久久亚洲国产天美传媒修理工| 国产97在线|亚洲| 久久偷看各类女兵18女厕嘘嘘| 亚洲在线观看视频网站| 亚洲国产精品999| 日产精品久久久一区二区福利| 欧洲日韩成人av|