ruby final draft enu 20100825

Upload: leheib

Post on 09-Apr-2018

216 views

Category:

Documents


0 download

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