As programs get more complex it makes sense to define methods.
They can be reused without repeating code blocks.
We want to keep our code as DRY (Don't Repeat Yourself) as possible.
def my_first_method
end
def dont_repeat_yourself
#my program will perform this action again and again!
end
Methods can do as much or as little as you need them to do.
def hello
puts "Hello universe!"
end
def really_hard_math
answer = (-5 + Math.sqrt(5**2 - 4 * (8*15)))/(2 * 8)
puts answer
end
A method will not be performed until it is "called".
# define the method:
def add_it_up
sum = 3 + 5
puts sum
end
# now call the method!
add_it_up
$ ruby adding.rb
8
$
A method can do more than just print to screen its results.
def two_plus_two
sum = 2 + 2
return sum
end
The command return gives the method a value.
We have a couple options when calling the method:
def two_plus_two
sum = 2 + 2
return sum
end
puts two_plus_two
# prints the value returned by the method returns
answer = two_plus_two
# assigns the value returned by the method to a variable
You don't even need to put return at the end of a method:
Ruby will return the last value assigned.
def two_plus_two
sum = 2 + 2
end
puts two_plus_two
$ ruby add_it.rb
4
$
You can give a method arguments or parameters (passed values) to play with!
def add_it_up(num1, num2)
sum = num1 + num2
end
puts add_it_up(4, 5)
#what would be printed to screen?
You can pass variables from outside the method via parameters.
def add_it_up(num1, num2)
sum = num1 + num2
end
time = 4
space = 5
puts add_it_up(time, space)
Let's try some exercises to practice writing methods...
Write a program that takes a String argument and outputs the String in reverse.
Create a method for converting weight from pounds to kilos.
Write a program that prompts you for a String and then outputs the length of the String.
In Ruby 6 / 4 == 1.
But what if we want the remainder also?
Write a program that asks for two (2) Integers, divides the first by the second and returns the result including the remainder.
If either of the numbers is not an Integer, then don't accept the number and ask again.
Do not accept zero (0) as a number.