Ruby uses exceptions. Instead of try
, the block is called begin
, and instead of catch
there is rescue
. The else
is executed when no exception occurs.
Ruby Methods (Part 2)
Here’s another use of methods. Notice that when we send an array as a parameter, changes in the function do update the value to the caller.
Ruby Methods (Part 1)
Functions (and later methods) are defined with def. Parameters are given, without types of course. Default values may be provided. Note that when we send an integer, the method does not change the value sent.
Ruby Iterators
Ruby iterators are methods which take and run a block of code. The block can be delimited by curly braces or by the keywords do
and end
. The brackets have higher precedence, and variables declared in them are destroyed when the bracked code exits.
Ruby Case Expression
The ruby case
statement is similar to the C/C++/Java switch
, but more directly related to the similar (and superior) structures from Pascal and Ada. First, it assumes that each case ends where the next one starts, without needing a break
to terminate a case. Secondly, each case can be expressed rather generally, with a single value, a range of value, or a list containing some of each.
Ruby For Loop
The Ruby for
loop is similar to the Python for
or the perl foreach
. Its basic operation is iterate over the contents of some collection. This may be an actual array or a range expression. A range expression is two numbers, surrounded by parens, and separated by either two dots or three. The three-dot form omits the last number from the range, while the two-dot version includes it. The three-dots version can be quite useful for creating a range of legal subscripts since the array size is not a legal subscript.
Ruby While Loops
The while
loop is conventional, but it also has a postfix form.
More Conditional Logic in Ruby!
Following from the previous tutorial on Conditional Logic in Ruby, look at this example:
# Let the user guess. print "Enter heads or tails? " hort = gets.chomp unless hort == 'heads' || hort == 'tails' print "I _said_ heads or tails. Can't you read?\n" exit(1) end # Now toss the coin. toss = if rand(2) == 1 then "heads" else "tails" end # Report. print "Toss was ", toss, ".\n" print "You Win!\n" if hort == toss
Some more amazing if
lore:
- The
unless
keyword is likeif
, but uses the opposite sense of the test: The code is run if the test is false. - As with many things in Ruby,
if
may look like a statement, but it is actually an expression, with a return value. - The
if
has a postfix form where the condition comes last. This works withunless
as well.
Conditional Logic in Ruby
This is the conventional use of the if
in perl. Notice that there is no need for curly braces ({
and }
). The body of the if
ends with the appropriate keyword, end
, else
or elsif
. The then
word is generally optional, though you need it if you want to put start the body on the same line as the if
, the way the last statement does.
Parallel Assignment in Ruby
A parallel assignment sets several variables at once. All right sides are computed before any variable is assigned, so all right side values are computed with the old variable values. This is very convenient for swapping two values without using a temporary.