• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Ruby程序設計語言快速入門之變量與賦值

    發布: 2007-4-27 00:07 | 作者: seanhe | 來源: | 查看: 21次 | 進入軟件測試論壇討論

    領測軟件測試網   變量與賦值

      至此,你是否注意到前面所有的示例代碼中都缺少某種東西?難道你必須輸入常數,實例變量或類變量?絕對不是!這正是Ruby的真正面向對象的天性的一部分。為此,首先讓我們看一下Ruby中以前的普通變量。至此,你已經創建了很多Rectangle實例,但是你并沒有把它們保留多長時間。比方說,你想要把一個變量賦值給你創建的一個Rectangle實例:

    myRectangle = Rectangle.new(4,5)

      在Ruby中這是完全有效的代碼,而且根本不需要另一行代碼來把myRectangle類型化或聲明為引用Rectangle的某種東西。在執行這一行代碼以后,變量myRectangle就引用一個Rectangle的實例(高度和寬度值分別為4,5)。但是,這僅是一種在任何時刻都可以更改的對象引用,而與對象的類型無關(在Ruby中一切都是對象)。因此,下面的命令提示符行中,你可以容易地把myRectangle賦值給一個字符串:

    irb(main):049:0< myRectangle=Rectangle.new(4,5)
    => #<Rectangle:0x587c758 @width=5, @height=4>
    irb(main):050:0< myRectangle="Jim's Rectangle"
    => "Jim's Rectangle"

      你可以在許多其它程序語言(甚至包括象Java這樣的面向對象的語言)中試驗一下,并觀察從你的IDE所產生的編譯錯誤。

      變量,實例變量,類變量,甚至還有"常量"其實都只是對象引用。它們引用對象,但是它們并不是對象本身。因此,它們可以被動態地改變,甚至引用另一種不同類型的對象。

      因為這一靈活性,所以必須在Ruby中進行一些約定以幫助每個人都知道某個變量正為代碼所使用。其實,你已經看到了其中之一(@符號,它意味著這是一個實例變量)。其它的變量,方法和類命名約定列于下表1中。

      · 局部變量和方法參數以一個小寫字母開頭。
      · 方法名字以一個小寫字母開頭。
      · 全局變量以一個$開頭。
      · 實例變量以一個@開頭。
      · 類變量以兩個@開頭。
      · 常數以一個大寫字母開頭(它們經常被指定全部大寫)。
      · 類和模塊名以一個大寫字母開頭。

    局部變量 全局變量 實例變量 類變量 常數 類名 方法名
    aVar $Var @var @@var VAR MyClass myMethod
    name $debug @lastName @@interest PI Rectangle area
            表1.這個表包含了在Ruby編碼約定下的相關示例。

      操作符方法

      現在,假定你想實現合并Rectangle類的實例或把它們添加到另一個Rectangle實例。你當然可以定義另外一個稱為"add"的方法,這種選擇利用了Ruby真正的面向對象的特征之一。然而,你還可以重載"+"運算符來適當地把兩個Rectangle實例加起來。這個"+"方法(如4+5),對Ruby來說,只是另外一個方法而已。由于只是"另外一個方法",所以你可以給它增加一些功能來滿足Rectangle類的需要。例如,你還可以定義"+"運算符來實現一個矩形面積加上另一個矩形面積。

    def + (anotherRectangle)
    totalArea = area() + anotherRectangle.area()
    Rectangle.new(@height,totalArea/@height)
    end

      在把這個方法添加到Rectangle類以后,你可以使用+方法調用來把兩個Rectangle的實例相加:

    irb(main):001:0> rect1=Rectangle.new(2,3)
    => #<Rectangle:0x58aa688 @width=3, @height=2>
    irb(main):002:0> rect2=Rectangle.new(3,4)
    => #<Rectangle:0x58a6ef0 @width=4, @height=3>
    irb(main):003:0> rect1+rect2
    => #<Rectangle:0x58a4a60 @width=9, @height=2>

      這正是操作符重載,對于那些使用過Agol,C++,Python和其它語言的用戶來說,可能已經非常熟悉這個特征。

      方法參數

      至此,我們一直假定,傳遞給一個方法的參數個數是已知的。也許在其它語言中不可思議,但是Ruby的確允許你傳遞可變個數的參數并且以單個參數來捕獲它們。為了創建一個可變長度的參數,只需要把一個星號(*)放在最后一個參數前面即可。這樣,你就可以在Ruby中編寫一個如下的多邊形定義。

    class Polygon
    def initialize (s1,s2,s3,*others)
    @sideOne = s1
    @sideTwo = s2
    @sideThree = s3
    @otherSides = others
    end
    end

      如下所示,你可以使用這個定義來創建一個三角形或一個六邊形。

    irb(main):009:0> poly1=Polygon.new(2,4,5)
    => #<Polygon:0x594db10 @otherSides=[], @sideThree=5, @sideTwo=4, @sideOne=2>
    irb(main):010:0> poly2=Polygon.new(2,18,4,5,7,9)
    => #<Polygon:0x5948d58 @otherSides=[5, 7, 9], @sideThree=4, @sideTwo=18, @sideOne=2>

      在支持可變長度參數的同時,Ruby還允許定義一個方法參數的默認值(在調用者沒有提供的情況下使用)。例如,下面是Rectangle類的一個更好的初始化表達。

    def initialize (hgt = 1, wdth = 1)
    @height = hgt
    @width = wdth
    end

      現在,在調用時如果省略了某參數,那么在定義中參數緊鄰的賦值運算符擔當一個缺省的賦值器,F在,當創建一新的矩形時,如果在調用時省略了寬度,那么一個適當的寬度也會被默認地提供:

    irb(main):090:0> rect=Rectangle.new(2)
    => #<Rectangle:0x5873f68 @width=1, @height=2>

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>