DEV Community

Augusto Kato
Augusto Kato

Posted on

54 38 37 38 37

Methods in Ruby

Methods are used to don't repeat the same thing all along the program.

Creating Methods

To create a method use this syntax:

def my_first_method
  "Hello"
end

puts my_first_method  #=> "Hello"
Enter fullscreen mode Exit fullscreen mode

Parameters and Arguments

Parameters are placeholder variables in the template of your method, whereas arguments are the actual variables that get passed to the method when it is called.

def add_ten(number)
  number + 10
end

puts add_ten(20)  #=> "30"
Enter fullscreen mode Exit fullscreen mode

In this example, number is a parameter and 20 is an argument.

Default Parameters

If you don't want to always give parameters when calling a method, use default parameters:

def add_ten(number = 1)
  number + 10
end

puts add_ten(20)  #=> "30"
puts add_ten      #=> "11"
Enter fullscreen mode Exit fullscreen mode

What Methods Return

Ruby offers implicit return for methods, it always returns the last expression that was evaluated.

And Ruby offers explicit return too, it is useful to write methods that check for input errors before continuing.

def even_odd(number)
  unless number.is_a? Numeric
    return "A number was not entered."
  end

  if number % 2 == 0
    "That is an even number."
  else
    "That is an odd number."
  end
end

puts even_odd(30) #=>  That is an even number.
puts even_odd("Egg") #=>  A number was not entered.
Enter fullscreen mode Exit fullscreen mode

Predicate Methods

Methods that have a question mark (?) at the end of their name, such as even?odd?, or between? are predicate methods, which is a naming convention that Ruby uses for methods that return a Boolean.

puts 3.even?  #=> false
puts 10.even?  #=> true
puts 171.odd?  #=> true

puts 13.between?(10, 15)  #=> true
Enter fullscreen mode Exit fullscreen mode

Bang Methods

Methods that are denoted with an exclamation mark (!) at the end of the method name.

By adding a ! to the end of your method, you indicate that this method performs its action and simultaneously overwrites the value of the original object with the result.

whisper = "HEY"
puts whisper.downcase! #=> "hey"
puts whisper #=> "hey"
Enter fullscreen mode Exit fullscreen mode

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (36)

Collapse
 
versacodes profile image
Franz Amersian

Very helpful @harkato I'm learning Rails right now with little experience with Ruby. This article just tells me how easy and beautiful Ruby programming is.

Btw, Do you work as a Ruby dev or Rails dev?

Collapse
 
harkato profile image
Augusto Kato

I started studying ruby ​​last week, my goal is to write articles while I learn this language. I still don't work.

Collapse
 
alvbarros profile image
AlvBarros

Very nice, cousin!

Collapse
 
codefriendship profile image
Augusto Cesar

Great job!

Collapse
 
cherryramatis profile image
Cherry Ramatis

Awesome article!

Collapse
 
renanvidal profile image
Renan Vidal Rodrigues

Good job, man!

Collapse
 
venturacodes profile image
Arthur Alves Venturin

Awesome! Keep it up with the great content.

Collapse
 
ladyprimm profile image
LadyPrimm

Great articule.. I was looking for something like this.. thx!!

Collapse
 
hellsu profile image
Felipe Costa

Awesome!

Collapse
 
offpepe profile image
Alan Albuquerque Ferreira Lopes

nice article cousin

Collapse
 
franolv profile image
Franciele B. de Oliveira

I dont know anything about ruby, I will follow your articles

Collapse
 
harkato profile image
Augusto Kato

I will try my best to keep updating!

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more