A Method in Ruby is a chunk of Code that is used to conduct a particular task. And that chunk is only executed when it is called.
Say if you want to add two numbers, you can have an add Method that would be dedicated to add the numbers.
Similarly, if you want to divide two numbers, you can have a divide Method that would divide the numbers.
So, instead of placing all the codes in a single place. You can distribute the work among different Methods. So, that your code looks more structured and clean.
Below are the rules to create a Method :
def my_method(myarg) puts "This is my first Method")
def my_method(myarg) puts "This is my first Method") end
And thats how we define a Method.
But it was mentioned in the Method description that a Method only executes only when it is called.
So, how a Method is called?
Let us see in the below example.
def my_method() puts "This is my first Method") end my_method()
So, in the above code, there are two parts,
def my_method() puts "This is my first Method") end
my_method()
So, in the above code we have defined a Method, my_method(). You can give any name to the Method(In this case we have given the name my_method(). Just don't forget to write the def keyword before it.
def my_method() puts "This is my first Method") end
And the work of the Method, my_method() is, just to print This is my first Method.
Now, just remember one thing, the above Method, my_method() will never execute until it is called.
And thus we have called the Method, my_method() in the next line.
my_method()
And the Method, my_method() is called, printing,
This is my first Method
Although, the Method, my_method() is defined in the first line in the code.
def my_method() puts "This is my first Method") end
But it will never be executed. Ruby will ignore the the above Method definition.
And come to the next line, where it finds the Method, my_method() is called.
my_method()
And only then the Method executes.
Just remember that the brackets() after the method is not not mandatory. It is upto you. If you want to place a bracket, it's fine. If you don't specify, it's also fine.
Let us see the method in the below example without brackets.
def my_method puts "This is my Method without brackets" end my_method
Now, let us look at another example of adding two numbers and returning the result using Methods.
def add(first_number, second_number) result = first_number + second_number return result end first_num = 5 second_num = 4 value = add(first_num, second_num) puts "The added result is #{value}"
Let us explain the above example with a practical scenario.
Say you are given a task of adding two numbers. And you would follow the below steps to achieve it :
def add(first_number, second_number)
result = first_number + second_number
return result
So far, we have seen how a Method works. Now, let us see who is the caller?
When the program execution begins, at first Ruby comes to the 5th line (As Ruby ignores the Method unless it is called).
And we initialise the first variable first_num with the value 5.
first_num = 5
Then in the next line, we have initialised the second variable second_num with the value 4.
second_num = 4
Then we call the add(first_num, second_num) Method.
value = add(first_num, second_num)
And Ruby searches for a Method with two arguments.
When it finds the Method, it assigns the value of first_num to first_number and second_num to second_number.
And gets into the block of the def add(first_number, second_number): Method.
This is where the numbers are added,
result = first_number + second_number
And the result is stored in a variable result.
And in the next line we return the added value(i.e. result).
return result
And the returned value goes back to the line, where the Method was called.
value = add(first_num, second_num)
And the variable value gets the added result(i.e. 9) from the variable result.
And in the next line the added value is printed as output.
puts "The added result is #{value}"
Nested Method is a Method inside a Method.
Let us see Nested Method in the below example.
def outer_method() def inner_method() puts "We are inside the inner Method" end inner_method() end outer_method()
So, in the above code, we have defined two Methods outer_func() and inner_func(). Since, a Method only executes only when it is called. The control comes to the fifth line directly, where the outer_func() is called.
And the control goes to the outer_method() for execution.
def outer_method() def inner_method() puts "We are inside the inner Method" end inner_method() end
And the control finds a Method named inner_method() defined inside the outer_method().
def inner_method() puts "We are inside the inner Method" end
Now, the Method inner_method() doesn't gets executed but goes to the next line, where the call to inner_method() is made.
inner_method()
And then the Method inner_method() executes.
def inner_method() puts "We are inside the inner Method" end
Printing the below output.