Ruby – Blocos de códigos

Blocos de código são trechos do código delimitados por “{ }” ou “do … end” que podem ser passados como “parâmetros” para funções, podendo ser chamados dentro dela. Exemplo:

[3,4,5].each{ puts hello }

No exemplo acima, a função “each” varre o array executando o código entre as chaves para cada elemento, como um iterador. Nesse caso, imprimindo “hello” três vezes na tela. Um dos usos mais comuns de blocos de código é justamente iterar sobre os elementos de um array, que podem ser passados como parâmentro para o bloco:

[3,4,5].each{ |x| puts x }

Agora podemos usar o valor “x”, fornecido pela função, dentro do nosso bloco. Os blocos podem ter mais de um parâmetro, sendo separados por vírgula entre o par de barras verticais.

Para criar funções que possam receber blocos de códigos, basta colocar a instrução “yield” dentro do corpo da função. Cada vez que o yield é executado, ele executa o bloco associado. Para passar parâmetros, eles são colocados logo depois do yield. Exemplo:

def calc(a, b)
    yield a, b
end
calc(3,4){ |x,y|   x*y}

  1. Hola,
    Pq o codigo acima(yield) nao roda?

    def calc(a, b)
    yield a b
    end
    calc(3,4){ |x,y| x*y}

    >ruby yield.rb
    yield.rb:8: warning: parenthesize argument(s) for future version
    yield.rb:8:in `calc’: undefined method `a’ for main:Object (NoMethodError)
    from yield.rb:10
    >Exit code: 1

    Abs


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s