Ruby資料類型

來源:互聯網
上載者:User

轉自[foreverphoenix的專欄]

數字

1、Ruby支援整數和浮點數。整數可以使任何長度。一定範圍內的整數是Fixnum類的對象。範圍之外的整數儲存在Bignum類的對象中。這種處理是透明的。

2、可以在一個ASCII字元前加一個問號來獲得其對應的整數值。Ctrl按鍵組合可以由?/C-x或?/cx(x&0x9f)來產生。Meta字元(x|0x80)可以由?/M-x來產生。

3、一個帶有小數點"或/和"指數的數字字面量被認為是Float對象。Float對象和本機上的double類型大小一樣。

4、Float精度有限,若需要更好精度的小數,可以使用標準庫中BigDecimal,但效率會受影響。

字串

1、字串字面量中可以放置各種逸出序列。字串分界符的類型決定了要被替換的程度。在單引號字串中,只識別反斜線和單引號的轉義。雙引號字串支援更多的逸出字元,還可以使用#{expr}把任何Ruby運算式的值放進字串中,其中如果expr是全域變數、類變數或執行個體變數的話,花括弧可以忽略。

2、另外有三種構建字串字面量的形式:%q(相當於單引號),%Q(相當於雙引號),here document。跟在q或Q後面的字元是分界符。分界符可以是任何一個非字母數位單位元組字元。字串被一直讀取直到出現下一個相同的(對({[<來說是對應的閉合符號) 分界符。Here document由源檔案中的那些行但沒有包含在<<字元後面指明終結字串的行組成。一般情況下終結符必須在第一列出現。如果把一個減號-放在<<字元後面,就可以縮排編排終結符。分隔字元可以跨越多行,行結束符以及後續行開始處的空格都被包含到字串中。

3、其他用於字串的分隔字元還有%w(%W)產生字串數組,%x執行shell命令,%r產生Regex。

4、Ruby字串是8位位元組序列。如果處理Unicode編碼,需要加入以下代碼:(jcode庫覆蓋了String類中大多數方法用來處理多位元組文本) $KCODE='u' require 'jcode'

5、Regex的三種表達方式:1)/regular_expression/ 2)Regexp.new(“regular_expression”) 3)%r{regular_expression}

區間

1、區間作為序列,”..”的形式是建立閉合的區間(包括右端的值),”…”的形式是建立半閉半開區間(不包括右端德值)。

2、可以用自訂的對象來建立區間,條件是這些對象必須實現succ方法和<=>。

3、區間作為條件使用,當區間的第一部分的條件為true時開啟,當區間的第二部分的條件為true關閉。兩點的range在第一次從關變為開時,會立即求解結束條件,並相應地變遷狀態。這意味著如果expr1和expr2在一個調用中都為真,那麼兩點形式的調用將結束於關狀態。不過該調用仍返回真。三點形式的range不會在進入開狀態後立即求解結束條件。

4、區間作為間隔,測試某些值是否會落入區間表達的間隔內。使用===操作符比較。

數組

1、數組類的字面量是在方括弧間由逗號分隔的一連串對象引用組成的。對於全部是字串對象的數組,可以用簡寫形式%w和%W來構成。%w形式將空格隔開的token提取為連續的數組元素,在單個字串內不執行替換。%W形式對每個token執行和雙引號字串一樣的替換規則,空格可以用反斜線轉義。

2、通過[index]訪問數組元素,第一個元素索引為0。索引可以為負值,-1表示最後一個元素。

散列表

1、散列表的初始化有兩種方式:{}中用key=>value的形式,[]中連續放置key,value,中間用逗號隔開。

2、散列表中的鍵如果使用equ?比較相等,那麼這兩個鍵必定具有相同的散列碼。如果把自訂類的對象執行個體作為hash鍵,那麼需要確保1)一旦對象被建立,它的散列碼就不再改變;2)每當鍵的散列碼發生變化時調用Hash#rehash方法重新對散列表進行索引。

符號

1、Ruby中Symbol 表示“名字”,比如字串的名字,標識符的名字。建立一個Symbol對象的方法是在名字或者字串前面加上冒號。每個String對象都是不同的,即便他們包含了相同的字串內容;而對於Symbol對象,一個名字(字串內容)唯一確定一個Symbol對象。名字相同,則Symbol相同;名字不同,則Symbol不同。Symbol對象一旦定義將一直存在,直到程式執行退出。所有Symbol對象存放在Ruby內部的符號表中,可以通過類方法Symbol.all_symbols得到當前Ruby程式中定義的所有Symbol對象,該方法返回一個Symbol對象數組。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.