Nesta aula iremos aprender como criar e estruturar uma função em ruby, veremos como retornar e passar múltiplos parâmetros para ela.

Funções

As funções nos ajudam a reutilizar código, uma rotina que seria util em comum pode ser transformada em função.

Definição básica de função
        
          def funcao
            puts "oi"
          end
        
      

Aula Prática

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
    
  


Próximas Aulas


Funções recursivas

Nesta aula iremos aprender um pouco mais sobre funções, iremos ver mais uma forma de utilizar a funç...

Orientação a objetos - instância e construtor

Nesta aula iremos aprender o como criar uma classe, uma instância e a utilização de construtores em ...

Orientação a Objetos - Accessors

Nesta aula iremos aprender como criar propriedades em uma classe ruby, iremos criar propriedades de ...

Orientação a Objetos - Herança

Nesta aula iremos aprender sobre herança, mais uma aula de orientação a objetos em Ruby, com a heran...

Orientação a Objetos - public, private, protected

Nesta aula iremos aprender as marcações public, private, protected e veremos as diferenças entre ela...

Orientação a objetos - Polimorfismo e Overload

Nesta aula iremos aprender como fazer polimorfismo no Ruby, também iremos ver como funciona o overlo...

Orientação a Objetos - Interface, Abstração, Singleton

Nesta aula iremos aprender como implementar Interface, Abstração e classe Singleton, de uma forma mu...

Metaprogramming - RunTime

Nesta aula iremos aprender o inicio da metaprogramação, veremos como o Ruby injeta métodos em objeto...



Danilo

Arquiteto de software, analista, programador, professor. Danilo criou o projeto torne-se um programador, para passar o seu conhecimento para a nova geração. Com o intuito de ser um bom pai, Danilo trabalha muito motivado para garantir o futuro de sua filha.

ELEVE SEUS GANHOS E POTENCIALIZE SUA PERFORMANCE

Receba nossa Ebook de LÓGICA DE PROGRAMAÇÃO

© Didox Business & Technology - CNPJ: 12.127.195/0001-14