Contents
13 Dealing with variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
14 Program flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
15 Writing functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
16 Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
17 Ruby is really, really object-oriented . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
18 Basic Ruby - Data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
18.1 Ruby Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
18.2 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
18.3 Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
18.4 Hashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
18.5 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
18.6 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
18.7 Numbers (Integers and Floats) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
18.8 Additional String Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
19 Basic Ruby - Writing methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
19.1 Defining Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
20 Basic Ruby - Classes and objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
20.1 Ruby Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
20.2 Creating Instances of a Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
20.3 Creating Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
20.4 Self . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
20.5 Class Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
21 Basic Ruby - Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
22 Syntax - Lexicology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
22.1 Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
22.2 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
22.3 Embedded Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
22.4 Reserved Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
22.5 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
23 Syntax - Variables and Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
23.1 Local Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
23.2 Instance Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
23.3 Class Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
23.4 Global Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
23.5 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
23.6 Pseudo Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
23.7 Pre-defined Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
23.8 Pre-defined Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
23.9 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
24 Syntax - Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
24.1 Numerics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
24.2 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
24.3 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
24.4 Hashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
24.5 Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
25 Syntax - Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
25.1 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
25.2 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
IV