字面值

能够在 Ruby 程序中直接表达的,比如数字 1 或是字符串 "hello world",被称为"字面值"。

数字字面值

123
0d123

整数

-123

带符号的整数

123.45

浮点数

浮点数不可由小数点开头,如 .1 这样的小数,要写成用0开头的 0.1。

1.2e-3

浮点数

0xffff

整数(十六进制)

0b1011

整数(二进制)

0377
0o377

整数(八进制)

数字字面值可以包含下划线,但Ruby的解释器会自动忽视,不会另做特别处理。因此在处理数值很大的整数时,可以作为千位分界符使用。然而在字面值之前后放置下划线,或是连续放置数个下划线,则会导致错误。

1_000_000_000   # => 1000000000
0xffff_ffff            # => 0xffffffff

字符串字面值

实例:

"这是字符串表达式\n"
'这是字符串表达式'

字符串 表达式以单引号(')或双引号(")开头并结尾。

使用双引号时,可以使用 转义符内嵌表达式 。单引号则不行(除了 \' 和 \\ 以外)。

以空白符间隔的多个字符串表达式视为同一个字符串。

p "foo" "bar"   # => "foobar"

转义符

注:在日文字体中,"\"和"¥"拥有相同的效力。

\t

tab 定位标签 (0x09)

\n

newline 换行 (0x0a)

\r

carriage return 归位 (0x0d)

\f

form feed 换页 (0x0c)

\b

backspace 退格 (0x08)

\a

bell 鸣声 (0x07)

\e

escape 逸出 (0x1b)

\s

space 空格 (0x20)

\nnn

八进制代码 nnn (n = 0-7)

\xnn

十六进制代码 nn (n = 0-9, a-f)

内嵌表达式

在由双引号包围的字符串以及正则表达式中可以使用「#{表达式}」" ,可以将表达式的内容以字符串的形式嵌入其中。若该表达式是带有 $ 或 @ 记号的变量名称,则可以省去大括号 { },也就是「#变量名称」的格式。井号(#)的后面若不是 {、$、@,则是表示井号本身。若是不使用内嵌表达式,在井号的前面加上反斜杠(\)。

$ruby = "RUBY"
p "my name is #{$ruby}"     # => "my name is RUBY"
p 'my name is #{$ruby}'     # => "my name is #{$ruby}"

正则表达式字面值

实例:

/^Ruby the OOPL/
/Ruby/i
/my name is #{myname}/

在两条斜线 (/) 之中的字符串称为正则表达式字面值,是 Regexp 类的实例。

在表达式中使用的转变符,请参看 正则表达式

在最后的斜线后面加上以下字母可以设置该正则表达式字面值的选项:

i

不区分大小写。

m

多行模式。使「.」也能匹配换行。

Ruby 正则表达式能正确匹配多字节字符(比如汉语、日语等)。

与字符串一样,控制符内嵌表达式也能在正则表达式中使用。

若正则表达式中不包含 内嵌表达式 的话 ,每次计算之后都会返回同一个正则表达式对象。若包含 内嵌表达式 ,则每次计算都会(依照所含有的内嵌表达式)返回一个新生成的正则表达式对象。

数组表达式

实例:

[1, 2, 3]

语法:

'[' 表达式 ',' ... ']'

计算每一个表达式,并返回包含所得值的数组,数组是 Array 类的实例。

数组表达式每次计算都会返回新的数组对象。

哈希表表达式

实例:

{1=>2, 2=>4, 3=>6}

语法:

'{' 表达式 '=>' 表达式 ',' ... '}'
'{' 表达式 ',' 表达式 ',' ... '}'

返回将每个最终值对应其主键的哈希表对象。哈希表是 Hash 类的实例。

哈希表,又称为关联数组,可以将任一类型的对象与另(任)一类型对象进行关连。

哈希表表达式每次计算后返回一个新的哈希表对象。

范围表达式

实例:

1 .. 20

Syntax:

表达式1 '..' 表达式2
表达式1 '...' 表达式2

在非条件表达式的情况下,则返回由表达式1至表达式2的范围对象。范围对象是 Range 类的实例。

使用 .. 运算符生成的范围对象则包含最后的表达式,而使用 ... 的则不包括。

若是表达式的两端皆是数字字面值,则每次计算都返回同一个范围对象;否则每次计算都返回一个新的范围对象。

符号

实例:

:class
:lvar
:method
:$gvar
:@ivar
:+

语法:

':' 标识符
':' 变量名
':' 运算符

返回与任何字符串有一对一对应关系的符号。符号是 Symbol 类的实例。

符号每次计算时总是返回同一个符号对象。