def: nomeando um pedaço reaproveitável de lógica
Algo que você vem lendo esse tempo todo
def apareceu em quase todo exemplo desde Variáveis e atribuição: calculate_total, BankAccount, symbolize_keys, average. Em cada vez, demonstrava outra coisa, como escopo ou conversão de symbol. Este curso faz do def o assunto: como definir um método e o que acontece quando você o chama.
A forma básica
def greet
puts "Hello!"
end
greet
# Hello!
def, um nome, um corpo, end. Chamar o nome, greet, roda o corpo em ordem, uma vez por chamada. A aula 4 do curso de variáveis usou isso para mostrar escopo sem explicar a sintaxe.
Por que métodos existem: nomeando repetição para longe
Um método dá nome a uma lógica que, sem ele, você escreveria toda vez que precisasse.
# Sem um método: lógica repetida, idêntica
puts "Welcome, valued customer!"
# ... depois, a mesma mensagem é necessária de novo ...
puts "Welcome, valued customer!"
# Com um método: escrito uma vez, chamado em qualquer lugar
def welcome_message
puts "Welcome, valued customer!"
end
welcome_message
welcome_message
Mude a mensagem depois e a versão com método tem um lugar só para editar; toda chamada recebe a mudança. Sem ele, cada cópia precisa da própria edição, e é fácil esquecer uma.
Chamando com e sem parênteses
O Ruby aceita uma chamada com ou sem parênteses, e as duas funcionam igual:
greet()
greet
Código Ruby costuma tirar os parênteses quando não há argumentos, como acima, e usá-los quando há, o assunto da próxima aula. Nenhum dos dois está errado. É uma convenção da comunidade, uma das alternativas expressivas de Ruby: felicidade do dev.
Nomeando métodos: as mesmas regras de variáveis
Nomes de método seguem as regras de nome do curso de variáveis: snake_case, começando com minúscula. Um método que responde sim ou não termina em ?, como empty?, zero? e passing?. Você já leu chamadas de todos eles, só nunca o def.
def valid_email?(text)
text.include?("@")
end
Nada novo na sintaxe. ? é válido no fim de um nome de método, e a comunidade o reserva para métodos que devolvem booleano.
O que este curso cobre
- Aula 1,
def, dando nome a lógica reaproveitável: a forma básica, e por que métodos existem (você está aqui) - Aula 2, Parâmetros: alimentando valores num método, e o que acontece quando a contagem não bate
- Aula 3, Valores padrão de parâmetro: tornando um argumento opcional
- Aula 4, Retorno implícito: o valor que um método entrega de volta, sem palavra-chave return necessária
- Aula 5, A palavra-chave
return: saindo de um método cedo, de propósito - Aula 6, Argumentos nomeados: nomeando valores no ponto de chamada em vez de depender de posição
- Aula 7, Juntando tudo: um pequeno desafio combinando tudo
No final, todo def que você leu sem contexto vai fazer sentido, e você vai escrever os seus.
Continue com a aula 2
Parâmetros: alimentando valores num método
Mostra parâmetros como variáveis locais preenchidas pela posição e o ArgumentError gerado quando a contagem de argumentos está errada.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.