Nesta aula iremos aprender como criar e estruturar uma função em ruby, veremos como retornar e passar múltiplos parâmetros para ela.
As funções nos ajudam a reutilizar código, uma rotina que seria util em comum pode ser transformada em função.
def funcao
puts "oi"
end
Como de praxe copie o arquivo padrão das aulas anteriores para seguir conforme o padrão.
Abaixo você vê uma função simples de cálculo, observe que além de defini-la deve invoca-la, chamando o nome dela. Os parênteses são opcionais a não ser que precise passar parâmetros.
require 'byebug'
# debugger
def teste
puts 1 + 5 - 3
end
teste
Nunca se esqueça de sempre acompanhar com o debugger
, acompanhando a execução passo-a-passo para
melhor entendimento.
Você pode chama-la quantas vezes quiser executar a mesma rotina. Abaixo conseguimos o retorno do cálculo 5 vezes seguidas, chamando a função ao invés de repetir código. A lógica permanece a mesma facilitando a manutenção e evolução do código.
As funções em Ruby têm retorno automático, ou seja se não explicitar com a palavra return
, a
última instrução é a que será retornada.
require 'byebug'
debugger
def teste
puts 1 + 5 - 3
end
teste
teste
teste
teste
teste
Exemplo com return, assim devemos passar o valor retornado pela função para uma variável para então imprimir a variável.
require 'byebug'
# debugger
def teste
return 1 + 420 - 3
end
a = teste
puts a
Exemplo com return condicional antes do final da função, parâmetros e atribuição para variável do valor retornado da função, altere o parâmetro de teste para ver os diferentes resultados.
require 'byebug'
# debugger
def teste(count)
return 1 if count == 2
1 + 420 - 3
end
a = teste(4)
# a = teste 4 - outra opção
puts a
Exemplo com parâmetro padrão.
require 'byebug'
# debugger
def teste(count=1)
return 1 if count == 2
1 + 420 - 3
end
a = teste
puts a
Exemplo com múltiplos parâmetros, ele recebe como um array.
require 'byebug'
# debugger
def teste(*parametros)
return 1 if count == 2
1 + 420 - 3
end
a = teste 1,2,3,4,5
puts a
Exemplo com múltiplos parâmetros, testando parâmetros.
require 'byebug'
# debugger
def teste(*parametros)
return 1 if parametros.include? 2
1 + 420 - 3
end
a = teste 1,2,3,4,5
puts a
Exemplo com múltiplos parâmetros, trabalhando com exceções (captura de erros).
require 'byebug'
# debugger
def teste(*parametros)
return 1 if parametros.include? 2
1 + 420 - 3
rescue Exception =>
puts "Opa um erro aconteceu"
puts e.message
end
a = teste 1,3,4,5
puts a
Sem esse tratamento o próprio Ruby terminará a execução.
Exemplo com código da aula 08 sobre Hash, aplicando as funções sobre o programa, observe como melhora a leitura do código "principal".
def captura_aluno
aluno = {}
puts "Digite o nome do aluno"
aluno[:nome] = gets.delete("\n")
puts "Digite o telefone do aluno"
aluno[:tel] = gets.delete("\n")
aluno
end
def mostrar_alunos(alunos)
alunos.each do |aluno|
puts "==============================================}"
puts "aluno: #{aluno[:nome]}, telefone: #{aluno[:tel]}"
end
end
loop do
puts "Bem vindo ao programa"
puts "Digite 0 para sair ou 1 para continuar"
valor = gets.to_i
break if(valor == 0)
alunos = []
3.times do
alunos << captura_aluno
end
mostrar_alunos(alunos)
end
Nesta aula iremos aprender como criar e estruturar uma função em ruby, veremos como retornar e passar múltiplos parâmetros para ela.
As funções nos ajudam a reutilizar código, uma rotina que seria util em comum pode ser transformada em função.
def funcao
puts "oi"
end
Como de praxe copie o arquivo padrão das aulas anteriores para seguir conforme o padrão.
Abaixo você vê uma função simples de cálculo, observe que além de defini-la deve invoca-la, chamando o nome dela. Os parênteses são opcionais a não ser que precise passar parâmetros.
require 'byebug'
# debugger
def teste
puts 1 + 5 - 3
end
teste
Nunca se esqueça de sempre acompanhar com o debugger
, acompanhando a execução passo-a-passo para
melhor entendimento.
Você pode chama-la quantas vezes quiser executar a mesma rotina. Abaixo conseguimos o retorno do cálculo 5 vezes seguidas, chamando a função ao invés de repetir código. A lógica permanece a mesma facilitando a manutenção e evolução do código.
As funções em Ruby têm retorno automático, ou seja se não explicitar com a palavra return
, a
última instrução é a que será retornada.
require 'byebug'
debugger
def teste
puts 1 + 5 - 3
end
teste
teste
teste
teste
teste
Exemplo com return, assim devemos passar o valor retornado pela função para uma variável para então imprimir a variável.
require 'byebug'
# debugger
def teste
return 1 + 420 - 3
end
a = teste
puts a
Exemplo com return condicional antes do final da função, parâmetros e atribuição para variável do valor retornado da função, altere o parâmetro de teste para ver os diferentes resultados.
require 'byebug'
# debugger
def teste(count)
return 1 if count == 2
1 + 420 - 3
end
a = teste(4)
# a = teste 4 - outra opção
puts a
Exemplo com parâmetro padrão.
require 'byebug'
# debugger
def teste(count=1)
return 1 if count == 2
1 + 420 - 3
end
a = teste
puts a
Exemplo com múltiplos parâmetros, ele recebe como um array.
require 'byebug'
# debugger
def teste(*parametros)
return 1 if count == 2
1 + 420 - 3
end
a = teste 1,2,3,4,5
puts a
Exemplo com múltiplos parâmetros, testando parâmetros.
require 'byebug'
# debugger
def teste(*parametros)
return 1 if parametros.include? 2
1 + 420 - 3
end
a = teste 1,2,3,4,5
puts a
Exemplo com múltiplos parâmetros, trabalhando com exceções (captura de erros).
require 'byebug'
# debugger
def teste(*parametros)
return 1 if parametros.include? 2
1 + 420 - 3
rescue Exception =>
puts "Opa um erro aconteceu"
puts e.message
end
a = teste 1,3,4,5
puts a
Sem esse tratamento o próprio Ruby terminará a execução.
Exemplo com código da aula 08 sobre Hash, aplicando as funções sobre o programa, observe como melhora a leitura do código "principal".
def captura_aluno
aluno = {}
puts "Digite o nome do aluno"
aluno[:nome] = gets.delete("\n")
puts "Digite o telefone do aluno"
aluno[:tel] = gets.delete("\n")
aluno
end
def mostrar_alunos(alunos)
alunos.each do |aluno|
puts "==============================================}"
puts "aluno: #{aluno[:nome]}, telefone: #{aluno[:tel]}"
end
end
loop do
puts "Bem vindo ao programa"
puts "Digite 0 para sair ou 1 para continuar"
valor = gets.to_i
break if(valor == 0)
alunos = []
3.times do
alunos << captura_aluno
end
mostrar_alunos(alunos)
end