Changes

Ruby Variable Scope

2,514 bytes added, 18:56, 15 November 2007
What is Variable Scope?
<code>@@</code></td><td>A class variable</td></tr></table>
In addition, Ruby has two ''pseudo-variables'' which cannot be assigned values. These are ''nil'' which is assigned to uninitialized variables and ''self'' which refers to the currently executing object.In the remainder of this chapter we will look at each of these variable scopes in turn. == Ruby Local Variables == Local variables are local to the code construct in which they are declared. For example, a local variable declared in a method or within a loop cannot be accessed outside of that loop or method. Local variables name must begin with either an underscore or a lower case letter. For example: <pre>loopcounter = 10_LoopCounter = 20</pre> == Ruby Global Variables == Global variables in Ruby are accessible from anywhere in the Ruby program, regardless of where they are declared. Global variable names are prefixed with a dollar sign ($). For example: <pre>$welcome = "Welcome to Ruby Essentials"</pre> Use of global variables is strongly discouraged. The problem with global variables is that, not only are they visible anywhere in the code for a program, they can also be changed from anywhere in the application. This cna make tracking bugs difficult. It is useful to know, however, that a number of pre-defined global variables are available to you as a Ruby developer to obtain information about the Ruby enviroment. A brief summary of each of these variables is contained in the following table. <table border="1"><tr><td><code>$!</code> </td><td> The latest error message </td></tr><tr><td><code>$@</code> </td><td> The location of latest error </td></tr><tr><td><code>$_</code> </td><td> The string last read by <code>gets</code> </td></tr> <tr><td><code>$.</code> </td><td> The line <em>number</em> last read by interpreter </td></tr><tr><td><code>$&amp;</code> </td><td> The string last matched by regexp </td></tr><tr><td><code>$~</code> </td><td> The last regexp match, as an array of subexpressions </td></tr> <tr><td><code>$</code><em>n</em> </td><td> The <em>nth</em> subexpression in the last match (same as <code>$~[</code><em>n</em><code>]</code>) </td></tr><tr><td><code>$=</code> </td><td> The case-insensitivity flag </td></tr> <tr><td><code>$/</code> </td><td> The input record separator </td></tr><tr><td><code>$\</code> </td><td> The output record separator </td></tr><tr><td><code>$0</code> </td><td> The name of the ruby script file currently executing</td></tr> <tr><td><code>$*</code> </td><td> The command line arguments used to invoke the script</td></tr><tr><td><code>$$</code> </td><td> The Ruby interpreter's process ID </td></tr><tr><td><code>$?</code> </td><td> The exit status of last executed child process</td></tr></table>