Latest web development tutorials

Ruby 數據類型

本章節我們將為大家介紹Ruby 的基本數據類型。

Ruby支持的數據類型包括基本的Number、String、Ranges、Symbols,以及true、false和nil這幾個特殊值,同時還有兩種重要的數據結構——Array和Hash。


數值類型(Number)

1、整型(Integer)

整型分兩種,如果在31位以內(四字節),那為Fixnum實例。 如果超過,即為Bignum實例。

整數範圍從-2 30到2 30-1或-2 62到2 62-1 。 在這個範圍內的整數是類Fixnum的對象,在這個範圍外的整數存儲在類Bignum的對像中。

您可以在整數前使用一個可選的前導符號,一個可選的基礎指標(0 對應octal,0x 對應hex,0b 對應binary),後跟一串數字。 下劃線字符在數字字符串中被忽略。

您可以獲取一個ASCII 字符或一個用問號標記的轉義序列的整數值。

實例

123                  # Fixnum 十进制
1_234                # Fixnum 带有下划线的十进制
-500                 # 负的 Fixnum
0377                 # 八进制
0xff                 # 十六进制
0b1011               # 二进制
"a".ord              # "a" 的字符编码
?\n                  # 换行符(0x0a)的编码
12345678901234567890 # Bignum
#整型 Integer 以下是一些整型字面量 
#字面量(literal):代码中能见到的值,数值,bool值,字符串等都叫字面量 
#如以下的0,1_000_000,0xa等 
a1=0 

#带千分符的整型 
a2=1_000_000 

#其它进制的表示 
a3=0xa 
puts a1,a2 
puts a3 

#puts print 都是向控制台打印字符,其中puts带回车换行符 
=begin 
这是注释,称作:嵌入式文档注释 
类似C#中的/**/ 
=end 

浮點型

Ruby 支持浮點數。 它們是帶有小數的數字。 浮點數是類Float的對象,且可以是下列中任意一個。

實例

123.4                # 浮点值
1.0e6                # 科学记数法
4E20                 # 不是必需的
4e+20                # 指数前的符号
#浮点型 
f1=0.0 
f2=2.1 
f3=1000000.1 
puts f3  

算術操作

加減乘除操作符:+-*/;指數操作符為**

指數不必是整數,例如

#指数算术 
puts 2**(1/4)#1与4的商为0,然后2的0次方为1 
puts 16**(1/4.0)#1与4.0的商为0.25(四分之一),然后开四次方根 

字符串類型

Ruby 字符串簡單地說是一個8 位字節序列,它們是類String 的對象。

雙引號標記的字符串允許替換和使用反斜線符號,單引號標記的字符串不允許替換,且只允許使用\\ 和\' 兩個反斜線符號。

實例

實例

#!/usr/bin/ruby -w

puts 'escape using "\\"';
puts 'That\'s right';

運行實例»

這將產生以下結果:

escape using "\"
That's right

您可以使用序列#{ expr }替換任意Ruby表達式的值為一個字符串。 在這裡,expr 可以是任意的Ruby 表達式。

#!/usr/bin/ruby -w

puts "Multiplication Value : #{24*60*60}";

這將產生以下結果:

Multiplication Value : 86400
#!/usr/bin/ruby -w

name="Ruby" 
puts name 
puts "#{name+",ok"}" 

輸出結果為:

Ruby
Ruby,ok

反斜線符號

下表列出了Ruby 支持的反斜線符號:

符号表示的字符
\n换行符 (0x0a)
\r回车符 (0x0d)
\f换页符 (0x0c)
\b退格键 (0x08)
\a报警符 Bell (0x07)
\e转义符 (0x1b)
\s空格符 (0x20)
\nnn八进制表示法 (n 是 0-7)
\xnn十六进制表示法 (n 是 0-9、a-f 或 A-F)
\cx, \C-xControl-x
\M-xMeta-x (c | 0x80)
\M-\C-xMeta-Control-x
\x字符 x

如需了解更多有關Ruby字符串的細節,請查看Ruby字符串(String)

數組

數組字面量通過[]中以逗號分隔定義,且支持range定義。

  • (1)數組通過[]索引訪問
  • (2)通過賦值操作插入、刪除、替換元素
  • (3)通過+,-號進行合併和刪除元素,且集合做為新集合出現
  • (4)通過<<號向原數據追加元素
  • (5)通過*號重複數組元素
  • (6)通過|和&符號做並集和交集操作(注意順序)

實例:

實例

#!/usr/bin/ruby
ary = [ "fred", 10, 3.14, "This is a string", "last element", ]
ary.each do |i|
puts i
end

運行實例»

這將產生以下結果:

fred
10
3.14
This is a string
last element

如需了解更多有關Ruby數組的細節,請查看Ruby數組(Array)

哈希類型

Ruby 哈希是在大括號內放置一系列鍵/值對,鍵和值之間使用逗號和序列=> 分隔。 尾部的逗號會被忽略。

實例

實例

#!/usr/bin/ruby

hsh = colors = { "red" => 0xf00, "green" => 0x0f0, "blue" => 0x00f }
hsh.each do |key, value|
print key, " is ", value, "\n"
end

運行實例»

這將產生以下結果:

red is 3840
green is 240
blue is 15

如需了解更多有關Ruby哈希的細節,請查看Ruby哈希(Hash)

範圍類型

一個範圍表示一個區間。

範圍是通過設置一個開始值和一個結束值來表示。 範圍可使用s..e 和s...e 來構造,或者通過Range.new 來構造。

使用.. 構造的範圍從開始值運行到結束值(包含結束值)。 使用... 構造的範圍從開始值運行到結束值(不包含結束值)。 當作為一個迭代器使用時,範圍會返回序列中的每個值。

範圍(1..5) 意味著它包含值1, 2, 3, 4, 5,範圍(1...5) 意味著它包含值1, 2, 3, 4 。

實例

實例

#!/usr/bin/ruby

(10..15).each do |n|
print n, ' '
end

運行實例»

這將產生以下結果:

10 11 12 13 14 15

如需了解更多有關Ruby範圍的細節,請查看Ruby範圍(Range)