A linguagem de programação Ruby possui uma instrução “mágica” que suspende as regras da Orientação a Objeto, ligando blocos de procedimento a um método ou uma função, esta incomum instrução chamada Yield, permite que métodos sejam chamados como um argumento implícito e permitindo que os blocos tenham seus próprios argumentos, ou seja Yield passa para o método o conteúdo de um bloco quando interligados através de suas sintaxes, podendo ainda trocar parâmetros entre si.
Exemplo:
Neste exemplo criamos duas funções e dois blocos no qual interagem entre si através da instrução Yield.
Ruby
# Desenvolvimento Aberto # Block-yield.rb # cria uma função padrão def funcao # Esta instrução fornce uma conexão com um bloco puts "Yield conecta um bloco a uma function" puts "podendo substituir o conteudo do metodo" puts "O bloco executa:" yield end # função com parametros def parametros yield "Desenvolvimento Aberto" end # O bloco será executado no lugar do yield funcao { puts "Desenvolvimento" puts "Aberto" } # passa um parametro parametros { |x| puts "imprime o valor do campo yield: #{x}"}