Ruby Methods
Objetives

Methods

# Define Methods
def sum_two(number)
number + 2
end
# Invoque methods
sum(2)
sum(3)
sum(rand(8))
# Return
# Implicit return
puts sum(3)
# Explicit return
def always_even(number)
if number.odd?
return number + 1
else
return number + 2
end
always_even(3)
always_even(6)
always_even
Arguments

# Default arguments
def say_hello(name, is_angry = false)
response = "Hello #{name}"
if is_angry
response = response.upcase
end
response
end
puts say_hello("Paulo")
# Keyword arguments (args)
def say_hello(name, is_angry: false)
response = "Hello #{name}"
if is_angry
response = response.upcase
end
response
end
puts say_hello("Paulo")
# Keyword arguments (args)
def say_hello(name, prefix:, is_angry: false, time: "")
response = "Hello #{prefix} #{name}"
if !time.empty?
response += ", good #{time}"
end
if is_angry
response = response.upcase
end
response
end
puts say_hello("Paulo", is_angry: true, time: "evening", prefix: "Mr.")
To Consider

# Scope
def add_title(name)
"Mr. " + name
end
puts name
# Returns based on conditions
def say_hello(name, prefix:, is_angry: false, time: "")
return "Hi 😐" if is_angry
response = "Hello #{prefix} #{name}"
if !time.empty?
response += ", good #{time}"
end
response
end
puts say_hello("Paulo", is_angry: true, time: "evening", prefix: "Mr.")
Splat

# *Splat operator
def order_pizza(*pizzas)
"#{pizzas.size} pizza!"
end
p order_pizza("Big pizza A")
p order_pizza("Big pizza A", "Big pizza B")
p order_pizza("Big pizza A", "Big pizza B", "Big pizza C")
# double **Splat operators
def say_hello(name, **context)
response = "Hello #{context[:prefix]} #{name}"
if !context[:time].empty?
response += ", good #{context[:time]}"
end
if context[:is_angry]
response = response.upcase
end
response
end
puts say_hello("Paulo", is_angry: true, time: "evening", prefix: "Mr.")
Ruby Methods
By Paulo Tijero
Ruby Methods
- 83