ruby final draft enu 20100825
TRANSCRIPT
-
8/8/2019 Ruby Final Draft Enu 20100825
1/330
Programming Languages Ruby
IPA Ruby Standardization WG Draft
August 25, 2010
Information-technology Promotion Agency, Japan 2010
-
8/8/2019 Ruby Final Draft Enu 20100825
2/330
-
8/8/2019 Ruby Final Draft Enu 20100825
3/330
Contents Page
1 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Normative references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
3 Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
4 Terms and definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
5 Notational conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45.2.2 Productions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45.2.3 Syntactic term sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . 65.2.4 Syntactic terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75.2.5 Conceptual names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.3 Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105.4 Attributes of execution contexts . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6 Fundamental concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116.1 Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126.2.2 Instance variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6.3 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136.4 Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136.5 Classes, singleton classes, and modules . . . . . . . . . . . . . . . . . . . . . . . 13
6.5.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136.5.2 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146.5.3 Singleton classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146.5.4 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.5.5 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.6 Boolean values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
7 Execution contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177.2 The initial state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8 Lexical structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198.2 Program text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198.3 Line terminators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198.4 Whitespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208.5 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218.6 End-of-program markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228.7 Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
8.7.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228.7.2 Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238.7.3 Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238.7.4 Punctuators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248.7.5 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248.7.6 Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
iii
-
8/8/2019 Ruby Final Draft Enu 20100825
4/330
8.7.6.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 258.7.6.2 Numeric literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258.7.6.3 String literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
8.7.6.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . 288.7.6.3.2 Single quoted strings . . . . . . . . . . . . . . . . . . . . . . . 288.7.6.3.3 Double quoted strings . . . . . . . . . . . . . . . . . . . . . . . 29
8.7.6.3.4 Quoted non-expanded literal strings . . . . . . . . . . . . . . . 328.7.6.3.5 Quoted expanded literal strings . . . . . . . . . . . . . . . . . 348.7.6.3.6 Here documents . . . . . . . . . . . . . . . . . . . . . . . . . . 358.7.6.3.7 External command execution . . . . . . . . . . . . . . . . . . . 37
8.7.6.4 Array literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388.7.6.5 Regular expression literals . . . . . . . . . . . . . . . . . . . . . . . 418.7.6.6 Symbol literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
9 Scope of variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439.2 Scope of local variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.3 Scope of global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
10 Program structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4510.1 Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4510.2 Compound statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
11 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4611.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4611.2 Logical expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
11.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4611.2.2 Keyword logical expressions . . . . . . . . . . . . . . . . . . . . . . . . . . 4711.2.3 Logical NOT expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . 4711.2.4 Logical AND expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . 4811.2.5 Logical OR expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
11.3 Method invocation expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . 4911.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4911.3.2 Method arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5511.3.3 Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5811.3.4 The super expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6111.3.5 The yield expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
11.4 Operator expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6511.4.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6511.4.2 Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
11.4.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 6511.4.2.2 Single assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
11.4.2.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . 6611.4.2.2.2 Single variable assignments . . . . . . . . . . . . . . . . . . . . 6611.4.2.2.3 Scoped constant assignments . . . . . . . . . . . . . . . . . . . 6811.4.2.2.4 Single indexing assignments . . . . . . . . . . . . . . . . . . . . 6911.4.2.2.5 Single method assignments . . . . . . . . . . . . . . . . . . . . 70
11.4.2.3 Abbreviated assignments . . . . . . . . . . . . . . . . . . . . . . . . 7111.4.2.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . 7111.4.2.3.2 Abbreviated variable assignments . . . . . . . . . . . . . . . . 7111.4.2.3.3 Abbreviated indexing assignments . . . . . . . . . . . . . . . . 7211.4.2.3.4 Abbreviated method assignments . . . . . . . . . . . . . . . . 73
11.4.2.4 Multiple assignments . . . . . . . . . . . . . . . . . . . . . . . . . . 73
iv
-
8/8/2019 Ruby Final Draft Enu 20100825
5/330
-
8/8/2019 Ruby Final Draft Enu 20100825
6/330
12.2 The expression statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10612.3 The if modifier statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10712.4 The unless modifier statement . . . . . . . . . . . . . . . . . . . . . . . . . . . 10712.5 The while modifier statement . . . . . . . . . . . . . . . . . . . . . . . . . . . 10712.6 The until modifier statement . . . . . . . . . . . . . . . . . . . . . . . . . . . 10812.7 The rescue modifier statement . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
13 Classes and modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10913.1 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
13.1.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10913.1.2 Module definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10913.1.3 Module inclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
13.2 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11113.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11113.2.2 Class definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11113.2.3 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11313.2.4 Instance creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
13.3 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11313.3.1 Method definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11313.3.2 Method parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11513.3.3 Method invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11713.3.4 Method lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11913.3.5 Method visibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
13.3.5.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 12013.3.5.2 Public methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12013.3.5.3 Private methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12013.3.5.4 Protected methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12013.3.5.5 Visibility change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
13.3.6 The alias statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12113.3.7 The undef statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
13.4 Singleton classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12313.4.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12313.4.2 Singleton class definition . . . . . . . . . . . . . . . . . . . . . . . . . . . 12413.4.3 Singleton method definition . . . . . . . . . . . . . . . . . . . . . . . . . . 124
14 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12614.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12614.2 Cause of exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12614.3 Exception handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
15 Built-in classes and modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12715.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12715.2 Built-in classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
15.2.1 Ob ject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12915.2.1.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 12915.2.1.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12915.2.1.3 Included modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12915.2.1.4 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12915.2.1.5 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
15.2.1.5.1 Object#initialize . . . . . . . . . . . . . . . . . . . . . . . . . . 13015.2.2 Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
15.2.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 13015.2.2.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
vi
-
8/8/2019 Ruby Final Draft Enu 20100825
7/330
15.2.2.3 Singleton methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13015.2.2.3.1 Module.constants . . . . . . . . . . . . . . . . . . . . . . . . . 13015.2.2.3.2 Module.nesting . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
15.2.2.4 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13115.2.2.4.1 Module#< . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13115.2.2.4.2 Module# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13315.2.2.4.7 Module#>= . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13315.2.2.4.8 Module#alias method . . . . . . . . . . . . . . . . . . . . . . . 13315.2.2.4.9 Module#ancestors . . . . . . . . . . . . . . . . . . . . . . . . . 13415.2.2.4.10 Module#append features . . . . . . . . . . . . . . . . . . . . . 13415.2.2.4.11 Module#attr . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13515.2.2.4.12 Module#attr accessor . . . . . . . . . . . . . . . . . . . . . . . 13515.2.2.4.13 Module#attr reader . . . . . . . . . . . . . . . . . . . . . . . . 136
15.2.2.4.14 Module#attr writer . . . . . . . . . . . . . . . . . . . . . . . . 13615.2.2.4.15 Module#class eval . . . . . . . . . . . . . . . . . . . . . . . . . 13615.2.2.4.16 Module#class variable defined? . . . . . . . . . . . . . . . . . 13715.2.2.4.17 Module#class variable get . . . . . . . . . . . . . . . . . . . . 13815.2.2.4.18 Module#class variable set . . . . . . . . . . . . . . . . . . . . 13815.2.2.4.19 Module#class variables . . . . . . . . . . . . . . . . . . . . . . 13815.2.2.4.20 Module#const defined? . . . . . . . . . . . . . . . . . . . . . . 13915.2.2.4.21 Module#const get . . . . . . . . . . . . . . . . . . . . . . . . . 13915.2.2.4.22 Module#const missing . . . . . . . . . . . . . . . . . . . . . . 14015.2.2.4.23 Module#const set . . . . . . . . . . . . . . . . . . . . . . . . . 14015.2.2.4.24 Module#constants . . . . . . . . . . . . . . . . . . . . . . . . . 140
15.2.2.4.25 Module#extend object . . . . . . . . . . . . . . . . . . . . . . 14115.2.2.4.26 Module#extended . . . . . . . . . . . . . . . . . . . . . . . . . 14115.2.2.4.27 Module#include . . . . . . . . . . . . . . . . . . . . . . . . . . 14115.2.2.4.28 Module#include? . . . . . . . . . . . . . . . . . . . . . . . . . 14115.2.2.4.29 Module#included . . . . . . . . . . . . . . . . . . . . . . . . . 14215.2.2.4.30 Module#included modules . . . . . . . . . . . . . . . . . . . . 14215.2.2.4.31 Module#initialize . . . . . . . . . . . . . . . . . . . . . . . . . 14215.2.2.4.32 Module#initialize copy . . . . . . . . . . . . . . . . . . . . . . 14315.2.2.4.33 Module#instance methods . . . . . . . . . . . . . . . . . . . . 14415.2.2.4.34 Module#method defined? . . . . . . . . . . . . . . . . . . . . . 14415.2.2.4.35 Module#module eval . . . . . . . . . . . . . . . . . . . . . . . 145
15.2.2.4.36 Module#private . . . . . . . . . . . . . . . . . . . . . . . . . . 14515.2.2.4.37 Module#protected . . . . . . . . . . . . . . . . . . . . . . . . . 14515.2.2.4.38 Module#public . . . . . . . . . . . . . . . . . . . . . . . . . . 14515.2.2.4.39 Module#remove class variable . . . . . . . . . . . . . . . . . . 14615.2.2.4.40 Module#remove const . . . . . . . . . . . . . . . . . . . . . . . 14715.2.2.4.41 Module#remove method . . . . . . . . . . . . . . . . . . . . . 14715.2.2.4.42 Module#undef method . . . . . . . . . . . . . . . . . . . . . . 148
15.2.3 Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14815.2.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 14815.2.3.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14815.2.3.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
15.2.3.3.1 Class#initialize . . . . . . . . . . . . . . . . . . . . . . . . . . 14815.2.3.3.2 Class#initialize copy . . . . . . . . . . . . . . . . . . . . . . . 149
vii
-
8/8/2019 Ruby Final Draft Enu 20100825
8/330
15.2.3.3.3 Class#new . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14915.2.3.3.4 Class#superclass . . . . . . . . . . . . . . . . . . . . . . . . . . 150
15.2.4 NilClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15015.2.4.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 15015.2.4.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15015.2.4.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
15.2.4.3.1 NilClass#& . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15015.2.4.3.2 NilClass# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15115.2.4.3.3 NilClass#| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15115.2.4.3.4 NilClass#nil? . . . . . . . . . . . . . . . . . . . . . . . . . . . 15115.2.4.3.5 NilClass#to s . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
15.2.5 TrueClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15115.2.5.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 15115.2.5.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15215.2.5.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
15.2.5.3.1 TrueClass#& . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15215.2.5.3.2 TrueClass# . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
15.2.5.3.3 TrueClass#to s . . . . . . . . . . . . . . . . . . . . . . . . . . 15215.2.5.3.4 TrueClass#| . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
15.2.6 FalseClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15315.2.6.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 15315.2.6.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15315.2.6.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
15.2.6.3.1 FalseClass#& . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15315.2.6.3.2 FalseClass# . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15315.2.6.3.3 FalseClass#to s . . . . . . . . . . . . . . . . . . . . . . . . . . 15315.2.6.3.4 FalseClass#| . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
15.2.7 Numeric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
15.2.7.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 15415.2.7.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15415.2.7.3 Included modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15415.2.7.4 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
15.2.7.4.1 Numeric#+@ . . . . . . . . . . . . . . . . . . . . . . . . . . . 15415.2.7.4.2 Numeric#@ . . . . . . . . . . . . . . . . . . . . . . . . . . . 15515.2.7.4.3 Numeric#abs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15515.2.7.4.4 Numeric#coerce . . . . . . . . . . . . . . . . . . . . . . . . . . 155
15.2.8 Integer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15615.2.8.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 15615.2.8.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
15.2.8.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15715.2.8.3.1 Integer#+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15715.2.8.3.2 Integer# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15715.2.8.3.3 Integer#* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15815.2.8.3.4 Integer#/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15815.2.8.3.5 Integer#% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15915.2.8.3.6 Integer# . . . . . . . . . . . . . . . . . . . . . . . . . . . 16015.2.8.3.7 Integer#== . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16015.2.8.3.8 Integer# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16115.2.8.3.9 Integer#& . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16115.2.8.3.10 Integer#| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
15.2.8.3.11 Integer# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16215.2.8.3.12 Integer#
-
8/8/2019 Ruby Final Draft Enu 20100825
9/330
15.2.8.3.13 Integer#>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16215.2.8.3.14 Integer#ceil . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16215.2.8.3.15 Integer#downto . . . . . . . . . . . . . . . . . . . . . . . . . . 16315.2.8.3.16 Integer#eql? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16315.2.8.3.17 Integer#floor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16315.2.8.3.18 Integer#hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
15.2.8.3.19 Integer#next . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16415.2.8.3.20 Integer#round . . . . . . . . . . . . . . . . . . . . . . . . . . . 16415.2.8.3.21 Integer#succ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16415.2.8.3.22 Integer#times . . . . . . . . . . . . . . . . . . . . . . . . . . . 16415.2.8.3.23 Integer#to f . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16515.2.8.3.24 Integer#to i . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16515.2.8.3.25 Integer#to s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16515.2.8.3.26 Integer#truncate . . . . . . . . . . . . . . . . . . . . . . . . . 16615.2.8.3.27 Integer#upto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
15.2.9 Float . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16615.2.9.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
15.2.9.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16715.2.9.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
15.2.9.3.1 Float#+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16715.2.9.3.2 Float# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16715.2.9.3.3 Float#* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16815.2.9.3.4 Float#/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16815.2.9.3.5 Float#% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16915.2.9.3.6 Float# . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17015.2.9.3.7 Float#== . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17115.2.9.3.8 Float#ceil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17115.2.9.3.9 Float#finite? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
15.2.9.3.10 Float#floor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17215.2.9.3.11 Float#infinite? . . . . . . . . . . . . . . . . . . . . . . . . . . . 17215.2.9.3.12 Float#round . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17215.2.9.3.13 Float#to f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17215.2.9.3.14 Float#to i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17315.2.9.3.15 Float#truncate . . . . . . . . . . . . . . . . . . . . . . . . . . 173
15.2.10 String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17315.2.10.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 17315.2.10.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17315.2.10.3 Included modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17315.2.10.4 Upper-case and lower-case characters . . . . . . . . . . . . . . . . . 174
15.2.10.5 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17415.2.10.5.1 String#* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17415.2.10.5.2 String#+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17515.2.10.5.3 String# . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17515.2.10.5.4 String#== . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17615.2.10.5.5 String#= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17615.2.10.5.6 String#[] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17615.2.10.5.7 String#capitalize . . . . . . . . . . . . . . . . . . . . . . . . . 17815.2.10.5.8 String#capitalize! . . . . . . . . . . . . . . . . . . . . . . . . . 17815.2.10.5.9 String#chomp . . . . . . . . . . . . . . . . . . . . . . . . . . . 17815.2.10.5.10 String#chomp! . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
15.2.10.5.11 String#chop . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17915.2.10.5.12 String#chop! . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
ix
-
8/8/2019 Ruby Final Draft Enu 20100825
10/330
15.2.10.5.13 String#downcase . . . . . . . . . . . . . . . . . . . . . . . . . 18015.2.10.5.14 String#downcase! . . . . . . . . . . . . . . . . . . . . . . . . . 18015.2.10.5.15 String#each line . . . . . . . . . . . . . . . . . . . . . . . . . . 18015.2.10.5.16 String#empty? . . . . . . . . . . . . . . . . . . . . . . . . . . . 18115.2.10.5.17 String#eql? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18115.2.10.5.18 String#gsub . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
15.2.10.5.19 String#gsub! . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18315.2.10.5.20 String#hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18315.2.10.5.21 String#include? . . . . . . . . . . . . . . . . . . . . . . . . . . 18315.2.10.5.22 String#index . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18415.2.10.5.23 String#initialize . . . . . . . . . . . . . . . . . . . . . . . . . . 18415.2.10.5.24 String#initialize copy . . . . . . . . . . . . . . . . . . . . . . . 18515.2.10.5.25 String#intern . . . . . . . . . . . . . . . . . . . . . . . . . . . 18515.2.10.5.26 String#length . . . . . . . . . . . . . . . . . . . . . . . . . . . 18515.2.10.5.27 String#match . . . . . . . . . . . . . . . . . . . . . . . . . . . 18515.2.10.5.28 String#replace . . . . . . . . . . . . . . . . . . . . . . . . . . . 18615.2.10.5.29 String#reverse . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
15.2.10.5.30 String#reverse! . . . . . . . . . . . . . . . . . . . . . . . . . . 18615.2.10.5.31 String#rindex . . . . . . . . . . . . . . . . . . . . . . . . . . . 18615.2.10.5.32 String#scan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18715.2.10.5.33 String#size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18815.2.10.5.34 String#slice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18815.2.10.5.35 String#split . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18815.2.10.5.36 String#sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19015.2.10.5.37 String#sub! . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19015.2.10.5.38 String#to i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19115.2.10.5.39 String#to f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19215.2.10.5.40 String#to s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
15.2.10.5.41 String#to sym . . . . . . . . . . . . . . . . . . . . . . . . . . . 19215.2.10.5.42 String#upcase . . . . . . . . . . . . . . . . . . . . . . . . . . . 19215.2.10.5.43 String#upcase! . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
15.2.11 Symbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19315.2.11.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 19315.2.11.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19315.2.11.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
15.2.11.3.1 Symbol#=== . . . . . . . . . . . . . . . . . . . . . . . . . . . 19315.2.11.3.2 Symbol#id2name . . . . . . . . . . . . . . . . . . . . . . . . . 19415.2.11.3.3 Symbol#to s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19415.2.11.3.4 Symbol#to sym . . . . . . . . . . . . . . . . . . . . . . . . . . 194
15.2.12 Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19415.2.12.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 19415.2.12.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19515.2.12.3 Included modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19515.2.12.4 Singleton methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
15.2.12.4.1 Array.[] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19515.2.12.5 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
15.2.12.5.1 Array#* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19515.2.12.5.2 Array#+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19615.2.12.5.3 Array#
-
8/8/2019 Ruby Final Draft Enu 20100825
11/330
15.2.12.5.7 Array#collect! . . . . . . . . . . . . . . . . . . . . . . . . . . . 19815.2.12.5.8 Array#concat . . . . . . . . . . . . . . . . . . . . . . . . . . . 19815.2.12.5.9 Array#delete at . . . . . . . . . . . . . . . . . . . . . . . . . . 19915.2.12.5.10 Array#each . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19915.2.12.5.11 Array#each index . . . . . . . . . . . . . . . . . . . . . . . . . 19915.2.12.5.12 Array#empty? . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
15.2.12.5.13 Array#first . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20015.2.12.5.14 Array#index . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20115.2.12.5.15 Array#initialize . . . . . . . . . . . . . . . . . . . . . . . . . . 20115.2.12.5.16 Array#initialize copy . . . . . . . . . . . . . . . . . . . . . . . 20215.2.12.5.17 Array#join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20215.2.12.5.18 Array#last . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20315.2.12.5.19 Array#length . . . . . . . . . . . . . . . . . . . . . . . . . . . 20315.2.12.5.20 Array#map! . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20415.2.12.5.21 Array#pop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20415.2.12.5.22 Array#push . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20415.2.12.5.23 Array#replace . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
15.2.12.5.24 Array#reverse . . . . . . . . . . . . . . . . . . . . . . . . . . . 20415.2.12.5.25 Array#reverse! . . . . . . . . . . . . . . . . . . . . . . . . . . . 20515.2.12.5.26 Array#rindex . . . . . . . . . . . . . . . . . . . . . . . . . . . 20515.2.12.5.27 Array#shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20515.2.12.5.28 Array#size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20615.2.12.5.29 Array#slice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20615.2.12.5.30 Array#unshift . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
15.2.13 Hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20615.2.13.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 20615.2.13.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20715.2.13.3 Included modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
15.2.13.4 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20715.2.13.4.1 Hash#== . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20715.2.13.4.2 Hash#[] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20815.2.13.4.3 Hash#[]= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20815.2.13.4.4 Hash#clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20915.2.13.4.5 Hash#default . . . . . . . . . . . . . . . . . . . . . . . . . . . 20915.2.13.4.6 Hash#default= . . . . . . . . . . . . . . . . . . . . . . . . . . 20915.2.13.4.7 Hash#default proc . . . . . . . . . . . . . . . . . . . . . . . . 21015.2.13.4.8 Hash#delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21015.2.13.4.9 Hash#each . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21015.2.13.4.10 Hash#each key . . . . . . . . . . . . . . . . . . . . . . . . . . 211
15.2.13.4.11 Hash#each value . . . . . . . . . . . . . . . . . . . . . . . . . 21115.2.13.4.12 Hash#empty? . . . . . . . . . . . . . . . . . . . . . . . . . . . 21115.2.13.4.13 Hash#has key? . . . . . . . . . . . . . . . . . . . . . . . . . . 21115.2.13.4.14 Hash#has value? . . . . . . . . . . . . . . . . . . . . . . . . . 21215.2.13.4.15 Hash#include? . . . . . . . . . . . . . . . . . . . . . . . . . . . 21215.2.13.4.16 Hash#initialize . . . . . . . . . . . . . . . . . . . . . . . . . . . 21215.2.13.4.17 Hash#initialize copy . . . . . . . . . . . . . . . . . . . . . . . 21315.2.13.4.18 Hash#key? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21315.2.13.4.19 Hash#keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21315.2.13.4.20 Hash#length . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21415.2.13.4.21 Hash#member? . . . . . . . . . . . . . . . . . . . . . . . . . . 214
15.2.13.4.22 Hash#merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21415.2.13.4.23 Hash#replace . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
xi
-
8/8/2019 Ruby Final Draft Enu 20100825
12/330
15.2.13.4.24 Hash#shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21515.2.13.4.25 Hash#size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21515.2.13.4.26 Hash#store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21615.2.13.4.27 Hash#value? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21615.2.13.4.28 Hash#values . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
15.2.14 Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
15.2.14.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 21615.2.14.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21615.2.14.3 Included modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21715.2.14.4 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
15.2.14.4.1 Range#== . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21715.2.14.4.2 Range#=== . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21715.2.14.4.3 Range#begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21815.2.14.4.4 Range#each . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21815.2.14.4.5 Range#end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21915.2.14.4.6 Range#exclude end? . . . . . . . . . . . . . . . . . . . . . . . 21915.2.14.4.7 Range#first . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
15.2.14.4.8 Range#include? . . . . . . . . . . . . . . . . . . . . . . . . . . 21915.2.14.4.9 Range#initialize . . . . . . . . . . . . . . . . . . . . . . . . . . 21915.2.14.4.10 Range#last . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22015.2.14.4.11 Range#member? . . . . . . . . . . . . . . . . . . . . . . . . . 220
15.2.15 Regexp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22015.2.15.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 22015.2.15.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22115.2.15.3 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22115.2.15.4 Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22115.2.15.5 Matching process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22515.2.15.6 Singleton methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
15.2.15.6.1 Regexp.compile . . . . . . . . . . . . . . . . . . . . . . . . . . 22615.2.15.6.2 Regexp.escape . . . . . . . . . . . . . . . . . . . . . . . . . . . 22615.2.15.6.3 Regexp.last match . . . . . . . . . . . . . . . . . . . . . . . . . 22715.2.15.6.4 Regexp.quote . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
15.2.15.7 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22815.2.15.7.1 Regexp#initialize . . . . . . . . . . . . . . . . . . . . . . . . . 22815.2.15.7.2 Regexp#initialize copy . . . . . . . . . . . . . . . . . . . . . . 22915.2.15.7.3 Regexp#== . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22915.2.15.7.4 Regexp#=== . . . . . . . . . . . . . . . . . . . . . . . . . . . 23015.2.15.7.5 Regexp#= . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23015.2.15.7.6 Regexp#casefold? . . . . . . . . . . . . . . . . . . . . . . . . . 230
15.2.15.7.7 Regexp#match . . . . . . . . . . . . . . . . . . . . . . . . . . . 23115.2.15.7.8 Regexp#source . . . . . . . . . . . . . . . . . . . . . . . . . . 231
15.2.16 MatchData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23115.2.16.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 23115.2.16.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23215.2.16.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
15.2.16.3.1 MatchData#[] . . . . . . . . . . . . . . . . . . . . . . . . . . . 23215.2.16.3.2 MatchData#begin . . . . . . . . . . . . . . . . . . . . . . . . . 23215.2.16.3.3 MatchData#captures . . . . . . . . . . . . . . . . . . . . . . . 23215.2.16.3.4 MatchData#end . . . . . . . . . . . . . . . . . . . . . . . . . . 23315.2.16.3.5 MatchData#initialize copy . . . . . . . . . . . . . . . . . . . . 233
15.2.16.3.6 MatchData#length . . . . . . . . . . . . . . . . . . . . . . . . 23415.2.16.3.7 MatchData#offset . . . . . . . . . . . . . . . . . . . . . . . . . 234
xii
-
8/8/2019 Ruby Final Draft Enu 20100825
13/330
15.2.16.3.8 MatchData#post match . . . . . . . . . . . . . . . . . . . . . 23415.2.16.3.9 MatchData#pre match . . . . . . . . . . . . . . . . . . . . . . 23415.2.16.3.10 MatchData#size . . . . . . . . . . . . . . . . . . . . . . . . . . 23515.2.16.3.11 MatchData#string . . . . . . . . . . . . . . . . . . . . . . . . . 23515.2.16.3.12 MatchData#to a . . . . . . . . . . . . . . . . . . . . . . . . . . 23515.2.16.3.13 MatchData#to s . . . . . . . . . . . . . . . . . . . . . . . . . . 235
15.2.17 Proc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23615.2.17.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 23615.2.17.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23615.2.17.3 Singleton methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
15.2.17.3.1 Proc.new . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23615.2.17.4 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
15.2.17.4.1 Proc#[] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23615.2.17.4.2 Proc#arity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23615.2.17.4.3 Proc#call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23715.2.17.4.4 Proc#clone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23815.2.17.4.5 Proc#dup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
15.2.18 Struct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23915.2.18.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 23915.2.18.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23915.2.18.3 Singleton methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
15.2.18.3.1 Struct.new . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23915.2.18.4 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
15.2.18.4.1 Struct#== . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24115.2.18.4.2 Struct#[] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24115.2.18.4.3 Struct#[]= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24215.2.18.4.4 Struct#each . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24315.2.18.4.5 Struct#each pair . . . . . . . . . . . . . . . . . . . . . . . . . 243
15.2.18.4.6 Struct#members . . . . . . . . . . . . . . . . . . . . . . . . . . 24315.2.18.4.7 Struct#select . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24315.2.18.4.8 Struct#initialize . . . . . . . . . . . . . . . . . . . . . . . . . . 24415.2.18.4.9 Struct#initialize copy . . . . . . . . . . . . . . . . . . . . . . . 244
15.2.19 Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24515.2.19.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 24515.2.19.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24515.2.19.3 Time computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
15.2.19.3.1 Day . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24515.2.19.3.2 Year . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24615.2.19.3.3 Month . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
15.2.19.3.4 Days of month . . . . . . . . . . . . . . . . . . . . . . . . . . . 24715.2.19.3.5 Hours, Minutes, and Seconds . . . . . . . . . . . . . . . . . . . 248
15.2.19.4 Time zone and Local time . . . . . . . . . . . . . . . . . . . . . . . . 24815.2.19.5 Daylight saving time . . . . . . . . . . . . . . . . . . . . . . . . . . . 24815.2.19.6 Singleton methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
15.2.19.6.1 Time.at . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24815.2.19.6.2 Time.gm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24915.2.19.6.3 Time.local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25115.2.19.6.4 Time.mktime . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25115.2.19.6.5 Time.now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25115.2.19.6.6 Time.utc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
15.2.19.7 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25215.2.19.7.1 Time#+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
xiii
-
8/8/2019 Ruby Final Draft Enu 20100825
14/330
15.2.19.7.2 Time# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25215.2.19.7.3 Time# . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25315.2.19.7.4 Time#asctime . . . . . . . . . . . . . . . . . . . . . . . . . . . 25315.2.19.7.5 Time#ctime . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25415.2.19.7.6 Time#day . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25415.2.19.7.7 Time#dst? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
15.2.19.7.8 Time#getgm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25515.2.19.7.9 Time#getlocal . . . . . . . . . . . . . . . . . . . . . . . . . . . 25515.2.19.7.10 Time#getutc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25515.2.19.7.11 Time#gmt? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25515.2.19.7.12 Time#gmt offset . . . . . . . . . . . . . . . . . . . . . . . . . . 25615.2.19.7.13 Time#gmtime . . . . . . . . . . . . . . . . . . . . . . . . . . . 25615.2.19.7.14 Time#gmtoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25615.2.19.7.15 Time#hour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25615.2.19.7.16 Time#initialize . . . . . . . . . . . . . . . . . . . . . . . . . . 25615.2.19.7.17 Time#initialize copy . . . . . . . . . . . . . . . . . . . . . . . 25715.2.19.7.18 Time#localtime . . . . . . . . . . . . . . . . . . . . . . . . . . 257
15.2.19.7.19 Time#mday . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25715.2.19.7.20 Time#min . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25815.2.19.7.21 Time#mon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25815.2.19.7.22 Time#month . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25815.2.19.7.23 Time#sec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25815.2.19.7.24 Time#to f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25915.2.19.7.25 Time#to i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25915.2.19.7.26 Time#usec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25915.2.19.7.27 Time#utc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25915.2.19.7.28 Time#utc? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26015.2.19.7.29 Time#utc offset . . . . . . . . . . . . . . . . . . . . . . . . . . 260
15.2.19.7.30 Time#wday . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26015.2.19.7.31 Time#yday . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26115.2.19.7.32 Time#year . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26115.2.19.7.33 Time#zone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
15.2.20 IO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26115.2.20.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 26115.2.20.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26215.2.20.3 Included modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26215.2.20.4 Singleton methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
15.2.20.4.1 IO.open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26315.2.20.5 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
15.2.20.5.1 IO#close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26315.2.20.5.2 IO#closed? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26415.2.20.5.3 IO#each . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26415.2.20.5.4 IO#each byte . . . . . . . . . . . . . . . . . . . . . . . . . . . 26415.2.20.5.5 IO#each line . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26515.2.20.5.6 IO#eof ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26515.2.20.5.7 IO#flush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26515.2.20.5.8 IO#getc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26615.2.20.5.9 IO#gets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26615.2.20.5.10 IO#initialize copy . . . . . . . . . . . . . . . . . . . . . . . . . 26615.2.20.5.11 IO#print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
15.2.20.5.12 IO#putc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26715.2.20.5.13 IO#puts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
xiv
-
8/8/2019 Ruby Final Draft Enu 20100825
15/330
15.2.20.5.14 IO#read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26815.2.20.5.15 IO#readchar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26915.2.20.5.16 IO#readline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26915.2.20.5.17 IO#readlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26915.2.20.5.18 IO#sync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27015.2.20.5.19 IO#sync= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
15.2.20.5.20 IO#write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27015.2.21 File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
15.2.21.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 27115.2.21.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27115.2.21.3 Singleton methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
15.2.21.3.1 File.exist? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27115.2.21.4 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
15.2.21.4.1 File#initialize . . . . . . . . . . . . . . . . . . . . . . . . . . . 27115.2.21.4.2 File#path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
15.2.22 Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27215.2.22.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
15.2.22.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27315.2.22.3 Built-in exception classes . . . . . . . . . . . . . . . . . . . . . . . . 27315.2.22.4 Singleton methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
15.2.22.4.1 Exception.exception . . . . . . . . . . . . . . . . . . . . . . . . 27315.2.22.5 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
15.2.22.5.1 Exception#exception . . . . . . . . . . . . . . . . . . . . . . . 27415.2.22.5.2 Exception#message . . . . . . . . . . . . . . . . . . . . . . . . 27415.2.22.5.3 Exception#to s . . . . . . . . . . . . . . . . . . . . . . . . . . 27415.2.22.5.4 Exception#initialize . . . . . . . . . . . . . . . . . . . . . . . . 275
15.2.23 StandardError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27515.2.23.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
15.2.23.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27515.2.24 ArgumentError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
15.2.24.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 27515.2.24.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
15.2.25 LocalJumpError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27515.2.25.1 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27515.2.25.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
15.2.25.2.1 LocalJumpError#exit value . . . . . . . . . . . . . . . . . . . 27515.2.25.2.2 LocalJumpError#reason . . . . . . . . . . . . . . . . . . . . . 276
15.2.26 RangeError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27615.2.26.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
15.2.26.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27615.2.27 RegexpError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
15.2.27.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 27615.2.27.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
15.2.28 RuntimeError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27615.2.28.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 27615.2.28.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
15.2.29 TypeError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27615.2.29.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 27615.2.29.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
15.2.30 ZeroDivisionError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
15.2.30.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 27715.2.30.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
xv
-
8/8/2019 Ruby Final Draft Enu 20100825
16/330
15.2.31 NameError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27715.2.31.1 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27715.2.31.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
15.2.31.2.1 NameError#name . . . . . . . . . . . . . . . . . . . . . . . . . 27715.2.31.2.2 NameError#initialize . . . . . . . . . . . . . . . . . . . . . . . 277
15.2.32 NoMethodError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
15.2.32.1 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27815.2.32.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
15.2.32.2.1 NoMethodError#args . . . . . . . . . . . . . . . . . . . . . . . 27815.2.32.2.2 NoMethodError#initialize . . . . . . . . . . . . . . . . . . . . 278
15.2.33 IndexError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27915.2.33.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 27915.2.33.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
15.2.34 IOError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27915.2.34.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 27915.2.34.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
15.2.35 EOFError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
15.2.35.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 27915.2.35.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
15.2.36 SystemCallError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27915.2.36.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 27915.2.36.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
15.2.37 ScriptError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27915.2.37.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 27915.2.37.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
15.2.38 SyntaxError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28015.2.38.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 28015.2.38.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
15.2.39 LoadError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28015.2.39.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 28015.2.39.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
15.3 Built-in modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28015.3.1 Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
15.3.1.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 28015.3.1.2 Singleton methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
15.3.1.2.1 Kernel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28015.3.1.2.2 Kernel.block given? . . . . . . . . . . . . . . . . . . . . . . . . 28115.3.1.2.3 Kernel.eval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28115.3.1.2.4 Kernel.global variables . . . . . . . . . . . . . . . . . . . . . . 281
15.3.1.2.5 Kernel.iterator? . . . . . . . . . . . . . . . . . . . . . . . . . . 28215.3.1.2.6 Kernel.lambda . . . . . . . . . . . . . . . . . . . . . . . . . . . 28215.3.1.2.7 Kernel.local variables . . . . . . . . . . . . . . . . . . . . . . . 28315.3.1.2.8 Kernel.loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28315.3.1.2.9 Kernel.p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28315.3.1.2.10 Kernel.print . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28415.3.1.2.11 Kernel.puts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28415.3.1.2.12 Kernel.raise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28415.3.1.2.13 Kernel.require . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
15.3.1.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28615.3.1.3.1 Kernel#== . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
15.3.1.3.2 Kernel#=== . . . . . . . . . . . . . . . . . . . . . . . . . . . 28615.3.1.3.3 Kernel# id . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
xvi
-
8/8/2019 Ruby Final Draft Enu 20100825
17/330
15.3.1.3.4 Kernel# send . . . . . . . . . . . . . . . . . . . . . . . . . . 28715.3.1.3.5 Kernel# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28715.3.1.3.6 Kernel#block given? . . . . . . . . . . . . . . . . . . . . . . . 28715.3.1.3.7 Kernel#class . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28715.3.1.3.8 Kernel#clone . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28815.3.1.3.9 Kernel#dup . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
15.3.1.3.10 Kernel#eql? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28915.3.1.3.11 Kernel#equal? . . . . . . . . . . . . . . . . . . . . . . . . . . . 28915.3.1.3.12 Kernel#eval . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28915.3.1.3.13 Kernel#extend . . . . . . . . . . . . . . . . . . . . . . . . . . . 28915.3.1.3.14 Kernel#global variables . . . . . . . . . . . . . . . . . . . . . . 29015.3.1.3.15 Kernel#hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29015.3.1.3.16 Kernel#initialize copy . . . . . . . . . . . . . . . . . . . . . . . 29015.3.1.3.17 Kernel#inspect . . . . . . . . . . . . . . . . . . . . . . . . . . 29115.3.1.3.18 Kernel#instance eval . . . . . . . . . . . . . . . . . . . . . . . 29115.3.1.3.19 Kernel#instance of? . . . . . . . . . . . . . . . . . . . . . . . . 29115.3.1.3.20 Kernel#instance variable defined? . . . . . . . . . . . . . . . . 292
15.3.1.3.21 Kernel#instance variable get . . . . . . . . . . . . . . . . . . . 29215.3.1.3.22 Kernel#instance variable set . . . . . . . . . . . . . . . . . . . 29215.3.1.3.23 Kernel#instance variables . . . . . . . . . . . . . . . . . . . . 29315.3.1.3.24 Kernel#is a? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29315.3.1.3.25 Kernel#iterator? . . . . . . . . . . . . . . . . . . . . . . . . . . 29415.3.1.3.26 Kernel#kind of? . . . . . . . . . . . . . . . . . . . . . . . . . . 29415.3.1.3.27 Kernel#lambda . . . . . . . . . . . . . . . . . . . . . . . . . . 29415.3.1.3.28 Kernel#local variables . . . . . . . . . . . . . . . . . . . . . . 29415.3.1.3.29 Kernel#loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29415.3.1.3.30 Kernel#method missing . . . . . . . . . . . . . . . . . . . . . . 29415.3.1.3.31 Kernel#methods . . . . . . . . . . . . . . . . . . . . . . . . . . 295
15.3.1.3.32 Kernel#nil? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29515.3.1.3.33 Kernel#object id . . . . . . . . . . . . . . . . . . . . . . . . . 29515.3.1.3.34 Kernel#p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29615.3.1.3.35 Kernel#print . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29615.3.1.3.36 Kernel#private methods . . . . . . . . . . . . . . . . . . . . . 29615.3.1.3.37 Kernel#protected methods . . . . . . . . . . . . . . . . . . . . 29715.3.1.3.38 Kernel#public methods . . . . . . . . . . . . . . . . . . . . . . 29715.3.1.3.39 Kernel#puts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29715.3.1.3.40 Kernel#raise . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29815.3.1.3.41 Kernel#remove instance variable . . . . . . . . . . . . . . . . . 29815.3.1.3.42 Kernel#require . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
15.3.1.3.43 Kernel#respond to? . . . . . . . . . . . . . . . . . . . . . . . . 29915.3.1.3.44 Kernel#send . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29915.3.1.3.45 Kernel#singleton methods . . . . . . . . . . . . . . . . . . . . 29915.3.1.3.46 Kernel#to s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
15.3.2 Enumerable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30015.3.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 30015.3.2.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
15.3.2.2.1 Enumerable#all? . . . . . . . . . . . . . . . . . . . . . . . . . 30015.3.2.2.2 Enumerable#any? . . . . . . . . . . . . . . . . . . . . . . . . . 30115.3.2.2.3 Enumerable#collect . . . . . . . . . . . . . . . . . . . . . . . . 30115.3.2.2.4 Enumerable#detect . . . . . . . . . . . . . . . . . . . . . . . . 302
15.3.2.2.5 Enumerable#each with index . . . . . . . . . . . . . . . . . . . 30215.3.2.2.6 Enumerable#entries . . . . . . . . . . . . . . . . . . . . . . . . 303
xvii
-
8/8/2019 Ruby Final Draft Enu 20100825
18/330
15.3.2.2.7 Enumerable#find . . . . . . . . . . . . . . . . . . . . . . . . . 30315.3.2.2.8 Enumerable#find all . . . . . . . . . . . . . . . . . . . . . . . 30315.3.2.2.9 Enumerable#grep . . . . . . . . . . . . . . . . . . . . . . . . . 30315.3.2.2.10 Enumerable#include? . . . . . . . . . . . . . . . . . . . . . . . 30415.3.2.2.11 Enumerable#inject . . . . . . . . . . . . . . . . . . . . . . . . 30415.3.2.2.12 Enumerable#map . . . . . . . . . . . . . . . . . . . . . . . . . 305
15.3.2.2.13 Enumerable#max . . . . . . . . . . . . . . . . . . . . . . . . . 30515.3.2.2.14 Enumerable#min . . . . . . . . . . . . . . . . . . . . . . . . . 30615.3.2.2.15 Enumerable#member? . . . . . . . . . . . . . . . . . . . . . . 30715.3.2.2.16 Enumerable#partition . . . . . . . . . . . . . . . . . . . . . . 30715.3.2.2.17 Enumerable#reject . . . . . . . . . . . . . . . . . . . . . . . . 30715.3.2.2.18 Enumerable#select . . . . . . . . . . . . . . . . . . . . . . . . 30815.3.2.2.19 Enumerable#sort . . . . . . . . . . . . . . . . . . . . . . . . . 30815.3.2.2.20 Enumerable#to a . . . . . . . . . . . . . . . . . . . . . . . . . 309
15.3.3 Comparable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30915.3.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 30915.3.3.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
15.3.3.2.1 Comparable#< . . . . . . . . . . . . . . . . . . . . . . . . . . 30915.3.3.2.2 Comparable# . . . . . . . . . . . . . . . . . . . . . . . . . . 31015.3.3.2.5 Comparable#>= . . . . . . . . . . . . . . . . . . . . . . . . . 31015.3.3.2.6 Comparable#between? . . . . . . . . . . . . . . . . . . . . . . 310
xviii
-
8/8/2019 Ruby Final Draft Enu 20100825
19/330
-
8/8/2019 Ruby Final Draft Enu 20100825
20/330
-
8/8/2019 Ruby Final Draft Enu 20100825
21/330
Information technology
Programming Languages Ruby
1 Scope1
This document specifies the syntax and semantics of the computer programming language Ruby2and the requirements for conforming Ruby processors, strictly conforming Ruby programs, and3
conforming Ruby programs.4
This document does not specify5
the limit of size or complexity of a program text which is acceptable to a conforming6processor,7
the minimal requirements of a data processing system that is capable of supporting a8conforming processor,9
the method for activating the execution of programs on a data processing system, and10
the method for reporting syntactic and runtime errors.11
NOTE Execution of a Ruby program is to evaluate the program (see 10) by a Ruby processor.12
2 Normative references13
The following referenced documents are indispensable for the application of this document. For14dated references, only the edition cited applies. For undated references, the latest edition of the15referenced document (including any amendments) applies.16
ISO/IEC 646:1991, Information technology ISO 7-bit coded character set for information17interchange.18
NOTE Corresponding JIS: JIS X 0201:1997 7-bit and 8-bit coded character sets for information19interchange (MOD)20
IEC 60559:1989, Binary floating-point arithmetic for microprocessor systems.21
3 Conformance22
A strictly conforming Ruby program shall23
1
-
8/8/2019 Ruby Final Draft Enu 20100825
22/330
use only those features of the language specified in this document, and1
not produce output dependent on any unspecified or implementation-defined behavior.2
A conforming Ruby processor shall3
accept any strictly conforming programs and behave as specified in this document.4
A conforming Ruby processor may5
evaluate a strictly conforming program in a different way from the one described in this6document, if it does not change the behavior of the program; however, if the program7redefines any method of a built-in class or module (see Clause 15), the behavior of the8program may be different from the one described in this document, and9
NOTE For example, a conforming processor may omit an invocation of a method of a built-in10class or module for optimization purpose, and do the same calculation as the method instead. In11
this case, even if a program redefines the method, the behavior of the program might not change12because the redefined method might not actually be invoked.13
support syntax not described in this document, and accept any programs which use features14not specified in this document.15
A conforming Ruby program is one that is acceptable to a conforming Ruby processor.16
4 Terms and definitions17
For the purposes of this document, the following terms and definitions apply. Other terms are18defined where they appear in bold slant face or on the left side of a syntax rule.19
4.120block21A procedure which is passed to a method invocation.22
4.223class24An object which defines the behavior of a set of other objects called its instances.25
NOTE The behavior is a set of methods which can be invoked on an instance.26
4.327class variable28A variable whose value is shared by all the instances of a class.29
4.430constant31A variable which is defined in a class or a module and is accessible both inside and outside the32class or module.33
NOTE The value of a cons