Ruby中的基本类型

本文为作者个人学习《Programming Ruby》的学习笔记,记录其中的重点、难点和学习体会,并无意泄露《Programming Ruby(中文版)》中的相关内容。

Ruby中的基本类型包括数字、字符串、数组、哈希表(hash)、区间(range)、符号和正则表达式。

1.整数和浮点数

1)Rub的整数是Fixnum类或Bignum类的对象。Fixnum类和Bignum类的区别在于它们的对象可以表示的字长不相同。Fixnum:可以容纳比本机字长少一位的整数;Bignum:它所表示的整数范围仅受限于本机可用内存的大小。如果Bignum对象的操作结果可以永Fixnum对象表示,那么结果将以Fixnum表示。

2)整数由一个可选的符号标记、一个可选的进制指示符和一个相应进制的字符串组成。

进制指示符:0b代表二进制,0代表八进制,0d代表十进制,0x代表十六进制。如果某整数省略进制指示符,则表示该整数默认为十进制。

3)数字字符串中的下划线字符将被忽略。

例如: 785_456                       => 785456

4)在ASSIC字符前加一个问号(?)可以取得其对应的整数值。

例如:

?]  => 93

?p   => 112

用这种方法不仅可以很方便地获得键盘上每一个单独按键所对应的ASSIC整数值,而且还能取得键盘上组合键所对应的ASSIC整数值。但是有一个前提,即必须知道这些组合键的表示方式。其中,Ctrl组合键字符可以表示为 :?\C-x或者是?\cx(C表示Ctrl键,x表示与Ctrl进行组合的键),例如:

?\C-t   =>20   # 等同于?\ct  =>20

5)带有小数点或指数的数字字面量被认为是Float对象,Float对象和本机上的Double数据类型大小一样。有一点需要特别注意:小数点后面必须跟一个数字,否则该字面量不能被正确地识别为数字。

例如:1.e3这样的串将试图调用Fixnum类的e3方法。

2.字符串

Ruby中的字符串是8比特字节的序列,是String类的对象。

1)Ruby中的字符串字面量可以用单引号或者是双引号括起来,这两种方法的区别在于对字符串字面量中字符的操作不相同。这里所指的操作主要是在字符串字面量中执行的替换。

2)单引号括起来的字符串字面量:执行的替换较少,除会将\\和\'分别替换为\和'外,其它的反斜线均不进行替换。例如:'how are you\?'  =>hao are you\?

3)双引号括起来的字符串字面量:执行的替换较多,反斜线后面的字符都将得到替换,但是有部分字符与反斜线搭配有固定的替换准则,如下表:

 双引号字符串中允许的替换<o:p></o:p>

\a <o:p></o:p>

Bell/alert (0x07) <o:p></o:p>

\nnn <o:p></o:p>

Octal nnn<o:p></o:p>

\b <o:p></o:p>

Backspace (0x08) <o:p></o:p>

\xnn <o:p></o:p>

Hex nn<o:p></o:p>

\e <o:p></o:p>

Escape (0x1b) <o:p></o:p>

\cx <o:p></o:p>

Control-x<o:p></o:p>

\f<o:p></o:p>

Formfeed (0x<st1:chmetcnv tcsc="0" hasspace="False" sourcevalue="0" numbertype="1" negative="False" w:st="on" unitname="C">0c</st1:chmetcnv>) <o:p></o:p>

\C-x<o:p></o:p>

Control-x<o:p></o:p>

\n <o:p></o:p>

Newline (0x<st1:chmetcnv tcsc="0" hasspace="False" sourcevalue="0" numbertype="1" negative="False" w:st="on" unitname="a">0a</st1:chmetcnv>) <o:p></o:p>

\M-x<o:p></o:p>

Meta-x<o:p></o:p>

\r <o:p></o:p>

Return (0x0d) <o:p></o:p>

\M-\-Cx<o:p></o:p>

Meta-control-x<o:p></o:p>

\s <o:p></o:p>

Space (0x20) <o:p></o:p>

\x <o:p></o:p>

x<o:p></o:p>

\t <o:p></o:p>

Tab (0x09) <o:p></o:p>

#{code} <o:p></o:p>

Value of code<o:p></o:p>

\v <o:p></o:p>

Vertical tab (0x0b)<o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

此时,"wel\scome"将不再转换为"welscome",而是:

"wel\scome"     =>  wel come

此外,用双引号括起来的字符串字面量中的表达式也将被替换,例如:

str = "hello,yang!"

"Please say:#{str}"   =>  Please say:hello,yang!

4)输入中相连的单引号字符串和双引号字符串将被连接为一个新的String对象,例如:

"Bro"  'ad'  'vie' "w"  => Broadview                             #  各字符串字面量之间可有空格

5)当字符串字面量用于赋值语句或作为参数时,一个新的String对象将被创建。

6)除单引号和双引号外,Ruby中还有其他3种构造字符串字面量的的方法:q%,Q%和here documents。

 3.区间(range)

 1)区间有两种表示方式:expr..expr和expr...expr。其中两个点表示的是闭合区间,三个点表示的前闭后开区间。

2)区间可用在条件表达式中,expr1..expr2,当expr1的值为真之前,整个条件表达式的值为假;当expr2的值为真之前,整个条件表达式的值才为真。

3)expr..expr和expr...expr还能构成Range对象。

 4.数组

 1)数组类的字面量是在方括号间由逗号分割的一连串对象引用组成的。为了理解这句话,请先看下面的这个数组:

arr = [  yang, 34, 43.3, "This is a string",  barney("pebbles"), ]

从该数组中可以看出,其字面量包括数字(34,43.3)、字符串("This is a string")和对象的引用(yang,barney("pebbles"), )。其中数字和字符串可以看作是特殊的对象引用,但是yang并不能直接作为数组的字面量,因为真正的字面量是yang所对应的引用的值。

2)数组也可以用简写形式w%和W%构成。

w%形式将空格隔开的token提取为连续的数组元素,在单个字符串内不进行替换,但是在含有反斜线字符时会进行替换,这一点与单引号构造字符串字面量的规则相同。

W%也是将单词列表转换为数组,同样对每个词执行和双引号字符串一样的替换规则。

你可能感兴趣的:(C++,c,正则表达式,C#,Ruby)