代码改变世界

一步一步学Ruby(四):Ruby标准类型

2009-01-24 23:33  敏捷的水  阅读(6063)  评论(2编辑  收藏  举报
Ruby 的标准类型包括数字(Numeric)、字符串(String)、区间(Range)以及正则表达式(Regexp)。
 
  • 数字
  • 字符串
  • 区间
  • 正则表达式

数字

Ruby 的数字包括整数(Integer)和浮点数(Float),这些类型都直接或间接继承自 Numeric。Ruby 的整数并没有长度限制,一定范围内的整数是 Fixnum 对象,当超出该范围则会自动转换成 Bignum。
 
image

Fixnum < Integer < Numeric
Bignum < Integer < Numeric
Float < Numeric
image
所有的浮点数类型都是 Float,无论它有多长。
image

和所有的语言一样,我们可以通过前导符号标定数字的格式。
  • 0 : 八进制。
  • 0d : 十进制。
  • 0x : 十六进制。 
  • 0b : 二进制。

image

我们可以用下划线(_)来分隔数字。
a = 100_874_6   类似我们习惯的 123,456,789。
image

"?x" 和 "?\cx(或 ?\C-x)" 分别用于显示字符或控制字符的整数值。
puts ?a
puts ?\n
puts ?\r
puts ?\ca # Ctrl + a
image

字符串

Ruby 字符串由 8bit 字节序列组成。字符串定义方式有很多种

简单点的是用单引号或双引号,当然包括我们熟悉的转义符。
s = 'That\'s Right!'
s = 'escape using "\\"'
s = "Hello, World!"
其中双引号字符串内部可以使用 #{expr}, 类似 C# String.Format。
可以使用局部变量,全局变量可省略大括号,也可以表达式。
image

另外还有更奇怪的,%q 相当于单引号,%Q 相当于双引号,还有 "here documents"。这些标记都通过特定的分界标记来定义字符串。
image

字符串类 String 提供了大量的操作方法,细节可参考类库文档。

区间

区间表示一种序列。在 Ruby 中,使用 ".." 表示闭区间,而使用 "..." 表示半闭半开区间,区别在于闭区间包含右端的值,而半闭半开区间则不包含。
image
区间不仅仅是整数,也可以是字符串等。
image

区间类型 Range 提供了很多操作方法。
image

正则表达式

Ruby 在语言层面提供了正则表达式的支持,我们可以用下面三种方法创建 Regexp 对象。
image
我们可以用操作符 "=~" 来完成匹配(Match)操作。(操作副 "!~" 和此作用相反,是否定匹配)
image

"$~" 返回 MatchData 对象。
image
 
 

本文作者:王德水

未经本人同意,禁止转载