国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Ruby中的變量學習總結

2019-10-26 19:24:20
字體:
來源:轉載
供稿:網友

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" 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平远县| 观塘区| 班戈县| 三河市| 宜阳县| 海城市| 土默特左旗| 长宁县| 富锦市| 陕西省| 萝北县| 鲁山县| 北海市| 南昌市| 林甸县| 闻喜县| 米泉市| 凤山市| 贡觉县| 宣城市| 鄂伦春自治旗| 涟水县| 辉县市| 鸡泽县| 高州市| 陵水| 黑龙江省| 杭锦后旗| 鹿邑县| 濮阳市| 梁平县| 石嘴山市| 阜南县| 增城市| 抚州市| 新平| 苍山县| 屏边| 广平县| 阜城县| 双牌县|