Information technology — Programming languages — Ruby

ISO/IEC 30170:2012 specifies the syntax and semantics of the computer programming language Ruby, and the requirements for conforming Ruby processors, strictly conforming Ruby programs, and conforming Ruby programs. It does not specify the limit of size or complexity of a program text which a conforming processor evaluates, the minimal requirements of a data processing system that is capable of supporting a conforming processor, the method for activating the execution of programs on a data processing system, and the method for reporting syntactic and runtime errors.

Technologies de l'information — Langages de programmation — Ruby

General Information

Status
Published
Publication Date
11-Apr-2012
Current Stage
9093 - International Standard confirmed
Completion Date
29-Apr-2021
Ref Project

Buy Standard

Standard
ISO/IEC 30170:2012 - Information technology -- Programming languages -- Ruby
English language
313 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (Sample)

INTERNATIONAL ISO/IEC
STANDARD 30170
First edition
2012-04-15

Information technology — Programming
languages — Ruby
Technologies de l'information — Langages de programmation — Ruby





Reference number
ISO/IEC 30170:2012(E)
©
ISO/IEC 2012

---------------------- Page: 1 ----------------------
ISO/IEC 30170:2012(E)

COPYRIGHT PROTECTED DOCUMENT


©  ISO/IEC 2012
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized in any form or by any means,
electronic or mechanical, including photocopying and microfilm, without permission in writing from either ISO at the address below or
ISO's member body in the country of the requester.
ISO copyright office
Case postale 56  CH-1211 Geneva 20
Tel. + 41 22 749 01 11
Fax + 41 22 749 09 47
E-mail copyright@iso.org
Web www.iso.org
Published in Switzerland

ii © ISO/IEC 2012 – All rights reserved

---------------------- Page: 2 ----------------------
ISO/IEC 30170:2012(E)
Contents Page
1 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Normative references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
3 Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
4 Terms and definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
5 Notational conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5.1 General description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5.2.2 Productions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5.2.3 Syntactic term sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.2.4 Syntactic terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.2.5 Conceptual names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.3 Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.4 Attributes of execution contexts . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6 Fundamental concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6.1 Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6.2.2 Instance variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.3 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.4 Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.5 Classes, singleton classes, and modules . . . . . . . . . . . . . . . . . . . . . . . 14
6.5.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.5.2 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.5.3 Singleton classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.5.4 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.5.5 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.6 Boolean values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7 Execution contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.1 General description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.2 The initial state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
8 Lexical structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
8.1 General description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
8.2 Program text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
8.3 Line terminators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
8.4 Whitespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
8.5 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
8.6 End-of-program markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
8.7 Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
8.7.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
8.7.2 Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
8.7.3 Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
8.7.4 Punctuators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
8.7.5 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
'ISO/IEC 2012 — All rights reserved iii

---------------------- Page: 3 ----------------------
ISO/IEC 30170:2012(E)
8.7.6 Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.7.6.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.7.6.2 Numeric literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.7.6.3 String literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
8.7.6.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . 29
8.7.6.3.2 Single quoted strings . . . . . . . . . . . . . . . . . . . . . . . 29
8.7.6.3.3 Double quoted strings . . . . . . . . . . . . . . . . . . . . . . . 30
8.7.6.3.4 Quoted non-expanded literal strings . . . . . . . . . . . . . . . 33
8.7.6.3.5 Quoted expanded literal strings . . . . . . . . . . . . . . . . . 35
8.7.6.3.6 Here documents . . . . . . . . . . . . . . . . . . . . . . . . . . 36
8.7.6.3.7 External command execution . . . . . . . . . . . . . . . . . . . 38
8.7.6.4 Array literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.7.6.5 Regular expression literals . . . . . . . . . . . . . . . . . . . . . . . 42
8.7.6.6 Symbol literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
9 Scope of variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.1 General description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.2 Scope of local variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.3 Scope of global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
10 Program structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
10.1 Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
10.2 Compound statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
11 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
11.1 General description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
11.2 Logical expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
11.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
11.2.2 Logical NOT expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
11.2.3 Logical AND expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
11.2.4 Logical OR expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
11.3 Method invocation expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
11.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
11.3.2 Method arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
11.3.3 Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
11.3.4 The super expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
11.3.5 The yield expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
11.4 Operator expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
11.4.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
11.4.2 Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
11.4.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
11.4.2.2 Single assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
11.4.2.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . 66
11.4.2.2.2 Single variable assignments . . . . . . . . . . . . . . . . . . . . 67
11.4.2.2.3 Scoped constant assignments . . . . . . . . . . . . . . . . . . . 69
11.4.2.2.4 Single indexing assignments. . . . . . . . . . . . . . . . . . . . 69
11.4.2.2.5 Single method assignments . . . . . . . . . . . . . . . . . . . . 70
11.4.2.3 Abbreviated assignments . . . . . . . . . . . . . . . . . . . . . . . . 71
11.4.2.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . 71
11.4.2.3.2 Abbreviated variable assignments . . . . . . . . . . . . . . . . 71
11.4.2.3.3 Abbreviated indexing assignments . . . . . . . . . . . . . . . . 72
11.4.2.3.4 Abbreviated method assignments . . . . . . . . . . . . . . . . 73
11.4.2.4 Multiple assignments . . . . . . . . . . . . . . . . . . . . . . . . . . 74
iv'ISO/IEC 2012 — All rights reserved

---------------------- Page: 4 ----------------------
ISO/IEC 30170:2012(E)
11.4.2.5 Assignments with rescue modifiers . . . . . . . . . . . . . . . . . . 78
11.4.3 Unary operator expressions . . . . . . . . . . . . . . . . . . . . . . . . . . 78
11.4.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
11.4.3.2 The defined? expression . . . . . . . . . . . . . . . . . . . . . . . . 79
11.4.4 Binary operator expressions . . . . . . . . . . . . . . . . . . . . . . . . . . 81
11.5 Primary expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
11.5.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
11.5.2 Control structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
11.5.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
11.5.2.2 Conditional expressions . . . . . . . . . . . . . . . . . . . . . . . . . 85
11.5.2.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . 85
11.5.2.2.2 The if expression . . . . . . . . . . . . . . . . . . . . . . . . . 85
11.5.2.2.3 The unless expression . . . . . . . . . . . . . . . . . . . . . . 87
11.5.2.2.4 The case expression . . . . . . . . . . . . . . . . . . . . . . . . 87
11.5.2.2.5 Conditional operator expression . . . . . . . . . . . . . . . . . 88
11.5.2.3 Iteration expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
11.5.2.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . 89
11.5.2.3.2 The while expression . . . . . . . . . . . . . . . . . . . . . . . 90
11.5.2.3.3 The until expression . . . . . . . . . . . . . . . . . . . . . . . 91
11.5.2.3.4 The for expression . . . . . . . . . . . . . . . . . . . . . . . . 91
11.5.2.4 Jump expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
11.5.2.4.1 General description . . . . . . . . . . . . . . . . . . . . . . . . 92
11.5.2.4.2 The return expression . . . . . . . . . . . . . . . . . . . . . . 93
11.5.2.4.3 The break expression . . . . . . . . . . . . . . . . . . . . . . . 94
11.5.2.4.4 The next expression . . . . . . . . . . . . . . . . . . . . . . . . 95
11.5.2.4.5 The redo expression . . . . . . . . . . . . . . . . . . . . . . . . 96
11.5.2.4.6 The retry expression . . . . . . . . . . . . . . . . . . . . . . . 97
11.5.2.5 The begin expression . . . . . . . . . . . . . . . . . . . . . . . . . . 97
11.5.3 Grouping expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
11.5.4 Variable references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
11.5.4.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
11.5.4.2 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
11.5.4.3 Scoped constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
11.5.4.4 Global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
11.5.4.5 Class variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
11.5.4.6 Instance variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
11.5.4.7 Local variables or method invocations . . . . . . . . . . . . . . . . . 102
11.5.4.7.1 General description . . . . . . . . . . . . . . . . . . . . . . . . 102
11.5.4.7.2 Determination of the type of local variable identifiers . . . . . 103
11.5.4.7.3 Local variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
11.5.4.7.4 Method invocations . . . . . . . . . . . . . . . . . . . . . . . . 104
11.5.4.8 Pseudo variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
11.5.4.8.1 General description . . . . . . . . . . . . . . . . . . . . . . . . 104
11.5.4.8.2 The nil expression . . . . . . . . . . . . . . . . . . . . . . . . 104
11.5.4.8.3 The true expression and the false expression . . . . . . . . . 104
11.5.4.8.4 The self expression . . . . . . . . . . . . . . . . . . . . . . . . 105
11.5.5 Object constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
11.5.5.1 Array constructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
11.5.5.2 Hash constructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
11.5.5.3 Range expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
12 Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
12.1 General description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
'ISO/IEC 2012 — All rights reserved v

---------------------- Page: 5 ----------------------
ISO/IEC 30170:2012(E)
12.2 Expression statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
12.3 The if modifier statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
12.4 The unless modifier statement . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
12.5 The while modifier statement . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
12.6 The until modifier statement . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
12.7 The rescue modifier statement . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
13 Classes and modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
13.1 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
13.1.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
13.1.2 Module definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
13.1.3 Module inclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
13.2 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
13.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
13.2.2 Class definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
13.2.3 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
13.2.4 Instance creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
13.3 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
13.3.1 Method definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
13.3.2 Method parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
13.3.3 Method invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
13.3.4 Method lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
13.3.5 Method visibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
13.3.5.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
13.3.5.2 Public methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
13.3.5.3 Private methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
13.3.5.4 Protected methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
13.3.5.5 Visibility change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
13.3.6 The alias statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
13.3.7 The undef statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
13.4 Singleton classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
13.4.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
13.4.2 Singleton class definition . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
13.4.3 Singleton method definition . . . . . . . . . . . . . . . . . . . . . . . . . . 126
14 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
14.1 General description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
14.2 Cause of exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
14.3 Exception handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
15 Built-in classes and modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
15.1 General description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
15.2 Built-in classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
15.2.1 Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
15.2.1.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
15.2.1.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
15.2.1.3 Included modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
15.2.1.4 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
15.2.1.5 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
15.2.1.5.1 Object#initialize. . . . . . . . . . . . . . . . . . . . . . . . . . 132
15.2.2 Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
15.2.2.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
15.2.2.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
vi'ISO/IEC 2012 — All rights reserved

---------------------- Page: 6 ----------------------
ISO/IEC 30170:2012(E)
15.2.2.3 Singleton methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
15.2.2.3.1 Module.constants . . . . . . . . . . . . . . . . . . . . . . . . . 132
15.2.2.3.2 Module.nesting . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
15.2.2.4 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
15.2.2.4.1 Module#<=> . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
15.2.2.4.2 Module#< . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
15.2.2.4.3 Module#<= . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
15.2.2.4.4 Module#> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
15.2.2.4.5 Module#>= . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
15.2.2.4.6 Module#== . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
15.2.2.4.7 Module#=== . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
15.2.2.4.8 Module#alias method . . . . . . . . . . . . . . . . . . . . . . . 135
15.2.2.4.9 Module#ancestors . . . . . . . . . . . . . . . . . . . . . . . . . 136
15.2.2.4.10 Module#append features . . . . . . . . . . . . . . . . . . . . . 136
15.2.2.4.11 Module#attr . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
15.2.2.4.12 Module#attr accessor . . . . . . . . . . . . . . . . . . . . . . . 137
15.2.2.4.13 Module#attr reader . . . . . . . . . . . . . . . . . . . . . . . . 137
15.2.2.4.14 Module#attr writer . . . . . . . . . . . . . . . . . . . . . . . . 138
15.2.2.4.15 Module#class eval . . . . . . . . . . . . . . . . . . . . . . . . . 138
15.2.2.4.16 Module#class variable defined? . . . . . . . . . . . . . . . . . 139
15.2.2.4.17 Module#class variable get . . . . . . . . . . . . . . . . . . . . 140
15.2.2.4.18 Module#class variable set . . . . . . . . . . . . . . . . . . . . 140
15.2.2.4.19 Module#class variables . . . . . . . . . . . . . . . . . . . . . . 140
15.2.2.4.20 Module#const defined? . . . . . . . . . . . . . . . . . . . . . . 141
15.2.2.4.21 Module#const get . . . . . . . . . . . . . . . . . . . . . . . . . 142
15.2.2.4.22 Module#const missing . . . . . . . . . . . . . . . . . . . . . . 142
15.2.2.4.23 Module#const set . . . . . . . . . . . . . . . . . . . . . . . . . 143
15.2.2.4.24 Module#constants . . . . . . . . . . . . . . . . . . . . . . . . . 143
15.2.2.4.25 Module#extend object . . . . . . . . . . . . . . . . . . . . . . 144
15.2.2.4.26 Module#extended . . . . . . . . . . . . . . . . . . . . . . . . . 144
15.2.2.4.27 Module#include . . . . . . . . . . . . . . . . . . . . . . . . . . 144
15.2.2.4.28 Module#include? . . . . . . . . . . . . . . . . . . . . . . . . . 145
15.2.2.4.29 Module#included . . . . . . . . . . . . . . . . . . . . . . . . . 145
15.2.2.4.30 Module#included modules . . . . . . . . . . . . . . . . . . . . 145
15.2.2.4.31 Module#initialize . . . . . . . . . . . . . . . . . . . . . . . . . 145
15.2.2.4.32 Module#initialize copy . . . . . . . . . . . . . . . . . . . . . . 146
15.2.2.4.33 Module#instance methods . . . . . . . . . . . . . . . . . . . . 147
15.2.2.4.34 Module#method defined? . . . . . . . . . . . . . . . . . . . . . 147
15.2.2.4.35 Module#module eval . . . . . . . . . . . . . . . . . . . . . . . 148
15.2.2.4.36 Module#private . . . . . . . . . . . . . . . . . . . . . . . . . . 148
15.2.2.4.37 Module#protected . . . . . . . . . . . . . . . . . . . . . . . . . 148
15.2.2.4.38 Module#public . . . . . . . . . . . . . . . . . . . . . . . . . . 148
15.2.2.4.39 Module#remove class variable . . . . . . . . . . . . . . . . . . 149
15.2.2.4.40 Module#remove const . . . . . . . . . . . . . . . . . . . . . . . 150
15.2.2.4.41 Module#remove method . . . . . . . . . . . . . . . . . . . . . 150
15.2.2.4.42 Module#undef method . . . . . . . . . . . . . . . . . . . . . . 151
15.2.3 Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
15.2.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
15.2.3.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
15.2.3.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
15.2.3.3.1 Class#initialize . . . . . . . . . . . . . . . . . . . . . . . . . . 151
15.2.3.3.2 Class#initialize copy . . . . . . . . . . . . . . . . . . . . . . . 152
'ISO/IEC 2012 — All rights reserved vii

---------------------- Page: 7 ----------------------
ISO/IEC 30170:2012(E)
15.2.3.3.3 Class#new . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
15.2.3.3.4 Class#superclass . . . . . . . . . . . . . . . . . . . . . . . . . . 153
15.2.4 NilClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
15.2.4.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
15.2.4.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
15.2.4.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
15.2.4.3.1 NilClass#& . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
15.2.4.3.2 NilClass#| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
15.2.4.3.3 NilClass#ˆ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
15.2.4.3.4 NilClass#nil? . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
15.2.4.3.5 NilClass#to s . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
15.2.5 TrueClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
15.2.5.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
15.2.5.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
15.2.5.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
15.2.5.3.1 TrueClass#& . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
15.2.5.3.2 TrueClass#| . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
15.2.5.3.3 TrueClass#ˆ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
15.2.5.3.4 TrueClass#to s . . . . . . . . . . . . . . . . . . . . . . . . . . 155
15.2.6 FalseClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
15.2.6.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
15.2.6.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
15.2.6.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
15.2.6.3.1 FalseClass#& . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
15.2.6.3.2 FalseClass#| . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
15.2.6.3.3 FalseClass#ˆ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
15.2.6.3.4 FalseClass#to s . . . . . . . . . . . . . . . . . . . . . . . . . . 157
15.2.7 Numeric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
15.2.7.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
15.2.7.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
15.2.7.3 Included modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
15.2.7.4 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
15.2.7.4.1 Numeric#+@ . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
15.2.7.4.2 Numeric#@ . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
15.2.7.4.3 Numeric#abs. . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
15.2.7.4.4 Numeric#coerce . . . . . . . . . . . . . . . . . . . . . . . . . . 158
15.2.8 Integer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
15.2.8.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
15.2.8.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
15.2.8.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
15.2.8.3.1 Integer#<=> . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
15.2.8.3.2 Integer#== . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
15.2.8.3.3 Integer#+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
15.2.8.3.4 Integer# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
15.2.8.3.5 Integer#* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
15.2.8.3.6 Integer#/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
15.2.8.3.7 Integer#% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
15.2.8.3.8 Integer#˜ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
15.2.8.3.9 Integer#&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
15.2.8.3.10 Integer#|. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
15.2.8.3.11 Integer#ˆ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
15.2.8.3.12 Integer#<< . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
viii'ISO/IEC 2012 — All rights reserved

---------------------- Page: 8 ----------------------
ISO/IEC 30170:2012(E)
15.2.8.3.13 Integer#>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
15.2.8.3.14 Integer#ceil . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
15.2.8.3.15 Integer#downto . . . . . . . . . . . . . . . . . . . . . . . . . . 166
15.2.8.3.16 Integer#eql? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
15.2.8.3.17 Integer#floor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
15.2.8.3.18 Integer#hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
15.2.8.3.19 Integer#next . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
15.2.8.3.20 Integer#round . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
15.2.8.3.21 Integer#succ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
15.2.8.3.22 Integer#times . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
15.2.8.3.23 Integer#to f . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
15.2.8.3.24 Integer#to i . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
15.2.8.3.25 Integer#to s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
15.2.8.3.26 Integer#truncate . . . . . . . . . . . . . . . . . . . . . . . . . 169
15.2.8.3.27 Integer#upto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
15.2.9 Float . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
15.2.9.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
15.2.9.2 Direct superclass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
15.2.9.3 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
15.2.9.3.1 Float#<=> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
15.2.9.3.2 Float#== . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
15.2.9.3.3 Float#+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
15.2.9.3.4 Float# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
15.2.9.3.5 Float#*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
15.2.9
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.