Qual é o significado de fazer em rubi?

Qual é o significado de fazer em rubi?

Ruby é uma linguagem de programação incrível, repleta de recursos e ferramentas modernas para a maioria dos ambientes de desenvolvimento. Ruby tem um recurso poderoso e muitas vezes esquecido: blocos.

A essência deste artigo é discutir e entender o que são os blocos de rubi, como eles funcionam e como podemos usá -los em nossos programas de rubi.

Começaremos com a sintaxe básica e depois discutiremos recursos como rendimento, que podem ser intimidadores para novos usuários de rubi.

O que são blocos de rubi?

Como é o caso em outras linguagens de programação, um bloco ou fechamento é uma função anônima que você inclui dentro de uma palavra -chave Do e final para blocos embutidos.

Os blocos permitem agrupar um bloco de código em componentes separados que você pode passar durante a chamada do método como parâmetros.

Existem duas maneiras de definir um bloco em Ruby: o primeiro está usando a palavra -chave Doe ...

Do… o bloco final é usado principalmente ao definir um bloco de código que abrange várias linhas, enquanto os aparelhos encaracolados são usados ​​ao definir um bloco de código que abrange uma única linha.

Você passa os argumentos de um bloco entre um par de caracteres de tubo | |

DICA: Se você usa uma única linha ou bloco de várias linhas, a funcionalidade não muda. No entanto, para fins de legibilidade, use aparelhos encaracolados para um único bloco de linha e bloqueios para bloqueios de várias linhas.

Exemplo básico

A seguir, são apresentados dois exemplos simples de um bloco de rubi, um usando aparelhos encaracolados, enquanto o outro usa… fim.

# única linha -
['Java', 'C', 'C ++'].cada | i | coloca eu
# multi -line -> fazer… fim
['Java', 'C', 'C ++'].cada um | i |
coloca i
fim

Ambos os exemplos acima produz resultados semelhantes:

  • Java
  • C
  • C++

O exemplo acima aplica blocos de rubi na forma mais simples: passamos pelo bloco em cada método do objeto da matriz. Passe os argumentos do bloco dentro de um par de caracteres de tubo; No exemplo acima, o argumento é eu. Finalmente, produzimos a funcionalidade do bloco dentro do corpo do bloco (neste exemplo, coloca).

Entendendo a palavra -chave Ruby rendimento

Você pode usar blocos de rubi dentro de um método padrão. A funcionalidade para executar essa ação é cortesia da palavra -chave de rendimento.

Vamos discutir a palavra -chave de rendimento em detalhes.

O que é rendimento em rubi?

O rendimento de palavras -chave em Ruby permite que você chame um bloco definido dentro de um método de rubi.

Como funciona

Vamos considerar um exemplo que nos ajudará a entender como a palavra -chave de rendimento funciona. Considere o método simples do rubi mostrado abaixo:

def hello
coloca "Olá!"
fim

O exemplo acima é um método Ruby simples que imprime “Olá!”.

Se quisermos adicionar mais flexibilidade ao programa, podemos permitir que o usuário passe um argumento durante a invocação do método.

Portanto, podemos codificar o método como:

def hello (nome)
coloca "olá" + nome
fim
Olá ("EUA")

No segundo exemplo, temos um pouco de flexibilidade, pois podemos passar qualquer nome ao método como argumento.

Podemos estender isso ainda mais usando um bloco de rubi. Quando passarmos pelo bloco dentro do método, ele será executado e retornará os resultados.

Definição do método de rendimento

Para criar um método que aceite um bloco, usamos o rendimento de palavras -chave. A sintaxe geral é como mostrado:

def hello
colheita
fim

Após a definição, podemos chamar o método e passar um bloco de código. O método executará o código e retornará o resultado.

Passando um bloqueio de rubi para um método

Podemos passar um bloco para o método usando a sintaxe do bloco. Por exemplo, podemos chamar o método acima com uma sintaxe como:

Olá coloca "Hello World"

Enquanto o método contive a palavra -chave de rendimento, você pode passar qualquer bloco de código e executá -lo.

OBSERVAÇÃO: Depois de definir uma palavra -chave de rendimento dentro de um método, você deve passar por um bloco ao chamar o método. Caso contrário, você receberá um erro "sem bloco dado (rendimento)".

Exemplo 2

Vamos dar outro exemplo:

def hello
coloca "antes do rendimento."
colheita
coloca "após o rendimento."
fim
olá puts "eu rendimento"

O exemplo acima ilustra como a execução de um método usando o rendimento funciona. A saída do programa está abaixo:

antes do rendimento
Eu sou rendimento
Após o rendimento

Argumentos do bloco de rubi

Ruby permite que você passe argumentos para o bloco Ruby. Os argumentos do bloco são definidos no bloco de rendimento e servem como os parâmetros do bloco.

A ordem em que você passa no argumento é fundamental, pois o bloco os aceitará na ordem definida.

def hello
rendimento ("John Doe", 20)
fim
Olá | nome, idade | coloca "Hello #nome, você tem #idade anos"

Os parâmetros definidos dentro do bloco têm um escopo local e estão disponíveis apenas no contexto do bloco.

Portanto, você obterá uma variável indefinida usada fora do escopo do bloco.

Exemplo 3

A funcionalidade do bloco não muda em blocos de linha única ou de várias linhas. Podemos ilustrar isso usando o exemplo abaixo:

Área defin
rendimento (7)
fim
área faça
coloca "A área do Cirle é #7 * 3.14159 cm2 "
fim

A saída do exemplo acima é:

A área do Cirle é 21.99113cm2

Isso mostra que blocos de várias linhas ou de linha única, a funcionalidade permanece a mesma.

Blocos explícitos

Nos exemplos anteriores, definimos os blocos como implícitos. No entanto, também podemos descrevê -los como explícitos.

Blocos explícitos significam que atribuímos um nome à lista de parâmetros do método.

Exemplo de def (& Block)
bloquear.chamar
fim
Exemplo coloca "Exemplo de bloco explícito"

Você passa o nome do bloco dentro do amperas e. Usando o nome do bloco, você pode passar o bloco salvo para outro método.

Bloquear o manuseio de erros

Nas seções anteriores, mencionamos que o bloco de rendimento é obrigatório. No entanto, você pode implementar uma lógica simples de manuseio de erros se o rendimento for fornecido. Fazemos isso usando o block_given? Método do kernel.

O método retorna um valor booleano de verdadeiro se o rendimento estiver disponível e false.

Considere o exemplo simples abaixo:

def hello
se block_given?
colheita
outro
coloca "nada aconteceu ... [erro]"
fim
fim

Se chamarmos o método com o valor de rendimento necessário, a saída será:

Olá coloca "Olá!"
Olá!

Por outro lado, chamar o método sem rendimento executará o bloco else como:

olá
Nada aconteceu ... [erro]

Usando o valor do block_given? Método, você pode implementar a lógica de manuseio de erros quando não há valor de rendimento.

Conclusão

Neste guia, discutimos blocos de rubi, o que são, como eles funcionam e como usá -los em seus projetos.

Obrigado pela leitura!