最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ruby編程中的賦值相關操作

 更新時間:2015年07月13日 12:07:28   投稿:goldensun  
這篇文章主要介紹了Ruby編程中的賦值相關操作,是Ruby入門學習中的基礎知識,需要的朋友可以參考下

在老版本的Ruby中,賦值語句的返回值是設置該屬性的方法的返回值。在Ruby1.8中,賦值語句的值總是參數(shù)的值而方法的返回值將被丟掉。
 

class Test
  def val=(val)
    @val = val
    return 99
  end    
end
 
t = Test.new
a = t.val=2
a           ->2

 在老版本中,a將被賦值語句設置為99,而在Ruby1.8中,它的值為2.

Ruby的賦值實際是以并行方式執(zhí)行的,所以賦值語句右邊的值不受賦值語句本身的影響。在左邊的任意一個變量或者屬性被賦值之前,右邊的值按它們出現(xiàn)的順序被計算出來。下面這個人為設計的例子說明了這一點。第二行講表達式x ,x+=1和x+=1的值分別賦值給變量a、b和c。
 

x = 0                 -> 0
a,b,c =x,(x+=1),(x+=1)   ->[0,1,2]

當賦值語句有多于一個左值時,賦值表達式將返回由右值組成的數(shù)組。如果賦值語句的左值多于右值,那么多余的左值將被忽略。如果右值多余左值,那么額外的右值將被忽略。如果賦值語句僅有一個左值而有多個右值,那么右值將被轉換成數(shù)組,然后賦值給左值。

 其實,可寫屬性有個隱藏的陷阱。通常,類中的方法可以通過函數(shù)形式(即帶一個隱式self作為接收者)調用同一個類的其他方法和它的父類的方法。然而這不適用于屬性賦值函數(shù):Ruby看到賦值語句時,會認為左邊的名字是局部變量,而不是一個為屬性賦值的方法調用。
 

class BrokenAmplifier
 attr_accessor :left_channel, :right_channel
 def volume=(vol)
   left_channel = self.right_channel = vol     
 end  
end
 
ba = BrokenAmplifier.new
ba.left_channel = ba.right_channel =99
ba.volume=5
ba.left_channel          ->99
ba.right_channel         ->5

  在上面的賦值語句中,我們忘了給left_channel加"self."前綴,所以Ruby存儲新值給volume= 方法的局部變量,因為根本沒有更新對象屬性。這會成為難以追蹤的缺陷

相關文章

  • Ruby實現(xiàn)批量對文件增加前綴代碼分享

    Ruby實現(xiàn)批量對文件增加前綴代碼分享

    這篇文章主要介紹了Ruby實現(xiàn)批量對文件增加前綴代碼分享,本文給出實現(xiàn)代碼、使用方法、使用示例等內容,需要的朋友可以參考下
    2015-01-01
  • Ruby中的block代碼塊學習教程

    Ruby中的block代碼塊學習教程

    在Ruby中,block并不是類,block可以被轉化為Proc類中衍生出的對象,剛接觸Ruby的話block是很難理解的一個點,接下來就為大家來總結Ruby中的block代碼塊學習教程
    2016-05-05
  • Ruby設計模式編程中對外觀模式的應用實例分析

    Ruby設計模式編程中對外觀模式的應用實例分析

    這篇文章主要介紹了Ruby設計模式編程中對外觀模式的應用實例分析,外觀模式在Ruby on Rails開發(fā)項目中也經(jīng)常被用到,需要的朋友可以參考下
    2016-03-03
  • ruby 學習筆記(1) 初識語法

    ruby 學習筆記(1) 初識語法

    Ruby是一種簡單的面向對象編程語言,十分容易上手,并且功能強大,ruby/ruby on rails從2007年就一直獲獎無數(shù),下面這篇文章給大家詳細介紹下,需要的朋友可以參考下
    2010-02-02
  • Ruby中實現(xiàn)把字符串轉換為類的2種方法

    Ruby中實現(xiàn)把字符串轉換為類的2種方法

    這篇文章主要介紹了Ruby中實現(xiàn)把字符串轉換為類的2種方法,其中一種是rails提供的方法,需要的朋友可以參考下
    2014-10-10
  • 提升Ruby on Rails性能的幾個解決方案

    提升Ruby on Rails性能的幾個解決方案

    這篇文章主要介紹了提升Ruby on Rails性能的幾個解決方案,本文來自于IBM官方網(wǎng)站技術文檔,需要的朋友可以參考下
    2015-04-04
  • 在Mac OS X下安裝Ruby運行環(huán)境的詳細步驟

    在Mac OS X下安裝Ruby運行環(huán)境的詳細步驟

    這篇文章主要給大家介紹了在Mac OS X下安裝Ruby運行環(huán)境的方法步驟,文中介紹的很詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-02-02
  • ruby 模塊

    ruby 模塊

    ruby 模塊...
    2007-11-11
  • ruby中的雙等號==問題詳解

    ruby中的雙等號==問題詳解

    Ruby里面有4種比較方法,equal?, eql?, ==, ===,而且在不同的類里面表現(xiàn)的很不一樣。在使用的時候也特別容易搞糊涂。 本文先給大家講述一下==號的用法及使用中應該注意的地方
    2016-02-02
  • Ruby中require、load、include、extend的區(qū)別介紹

    Ruby中require、load、include、extend的區(qū)別介紹

    這篇文章主要介紹了Ruby中require、load、include、extend的區(qū)別介紹,require、load用于文件,如.rb等等結尾的文件,include、load則用于包含一個文件中的模塊,需要的朋友可以參考下
    2015-05-05

最新評論

遂平县| 兰考县| 鹤壁市| 罗定市| 贵德县| 文成县| 青岛市| 顺昌县| 女性| 黑龙江省| 洪湖市| 遂溪县| 定南县| 获嘉县| 陆丰市| 临漳县| 曲阳县| 巴中市| 加查县| 洞头县| 桓台县| 滦平县| 黄大仙区| 永兴县| 昌黎县| 吉安县| 定日县| 长泰县| 商城县| 翁牛特旗| 乳山市| 蒙自县| 都安| 商洛市| 喀什市| 开鲁县| 宁城县| 华池县| 汽车| 保亭| 揭阳市|