summaryrefslogtreecommitdiff
path: root/doc/syntax/miscellaneous.rdoc
blob: 409afc797b31ab52eaf826d6586b9824ecabf8fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
= Miscellaneous Syntax

== +alias+

The +alias+ keyword is most frequently used to alias methods.  When aliasing a
method you can use either its name or a symbol:

  alias new_name old_name
  alias :new_name :old_name

For methods, Module#alias_method can often be used instead of +alias+.

You can also use +alias+ to alias global variables:

  $old = 0

  alias $new $old

  p $new # prints 0

You may use +alias+ in any scope.

== +undef+

The +undef+ keyword prevents the current class from responding to calls to the
named methods.

  undef my_method

You may use symbols instead of method names:

  undef :my_method

You may undef multiple methods:

  undef method1, method2

You may use +undef+ in any scope.  See also Module#undef_method

== +BEGIN+ and +END+

+BEGIN+ defines a block that is run before any other code in the current file.
It is typically used in one-liners with <code>ruby -e</code>.  Similarly +END+
defines a block that is run after any other code.

+BEGIN+ must appear at top-level and +END+ will issue a warning when you use it
inside a method.

Here is an example:

  BEGIN {
    count = 0
  }

You must use <code>{</code> and <code>}</code> you may not use +do+ and +end+.

Here is an example one-liner that adds numbers from standard input or any files
in the argument list:

  ruby -ne 'BEGIN { count = 0 }; END { puts count }; count += gets.to_i'