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}"}


