Este exercício vai te ensinar os blocos de construção fundamentais do Ruby. É bastante conteúdo, mas não se preocupe se parecer muita coisa: vamos nos aprofundar em tudo com muito mais detalhes conforme avançamos pelo track.
Uma das coisas essenciais para entender o Ruby é que ele é uma linguagem orientada a objetos e que tudo no Ruby é um objeto. Números, strings, arrays: todos são objetos.
Costumamos usar objetos dando nomes a eles, com variáveis ou constantes.
As variáveis são sempre escritas em snake case.
Uma variável pode referenciar objetos diferentes ao longo de sua existência.
Por exemplo, my_first_variable pode ser definida e redefinida várias vezes com o operador =:
my_first_variable = 1
my_first_variable = "Some string"
my_first_variable = SomeComplexObject.new
Já as constantes devem ser atribuídas uma única vez. Elas precisam começar com letra maiúscula e normalmente são escritas em caixa alta, com as palavras separadas por underscores. Por exemplo:
MY_FIRST_CONSTANT = 10
# Redefining not allowed
# MY_FIRST_CONSTANT = "Some String"
O Ruby é organizado em classes.
As classes são definidas com a palavra-chave class seguida do nome da classe.
Os objetos geralmente são criados instanciando classes com o método .new.
Por exemplo:
# Define the class
class Calculator
#...
end
# Create an instance of it and assign it to a variable
my_first_calc = Calculator.new
Unidades de funcionalidade ficam encapsuladas em métodos, semelhantes às funções de outras linguagens.
Um método pode ser definido com argumentos posicionais, argumentos nomeados (definidos e chamados com a sintaxe :) ou não ter nenhum argumento.
Os métodos retornam implicitamente o resultado da última instrução avaliada ou podem retornar explicitamente um objeto com a palavra-chave return.
class Calculator
# Positional arguments
def add(num1, num2)
return num1 + num2 # Explicit return
end
# Keyword arguments
def multiply(num1:, num2:)
num1 * num2 # Implicit return
end
end
Os métodos são chamados com a sintaxe .:
calc = Calculator.new
calc.add(1, 3)
calc.multiply(num1: 2, num2: 5)
Neste exercício, você vai escrever um código para ajudar a preparar uma lasanha incrível do seu livro de receitas favorito.
Você tem quatro tarefas, todas relacionadas ao tempo gasto no preparo da lasanha.
Defina a constante Lasagna::EXPECTED_MINUTES_IN_OVEN que retorna quantos minutos a lasanha deve ficar no forno. De acordo com o livro de receitas, o tempo esperado no forno, em minutos, é 40:
Lasagna::EXPECTED_MINUTES_IN_OVEN
# => 40
Defina o método Lasagna#remaining_minutes_in_oven que recebe como parâmetro os minutos que a lasanha já passou no forno e retorna quantos minutos ela ainda precisa ficar no forno, com base no tempo esperado no forno em minutos da tarefa anterior.
lasagna = Lasagna.new
lasagna.remaining_minutes_in_oven(30)
# => 10
Defina o método Lasagna#preparation_time_in_minutes que recebe como parâmetro o número de camadas que você adicionou à lasanha e retorna quantos minutos você gastou preparando a lasanha, supondo que cada camada leva 2 minutos para preparar.
lasagna = Lasagna.new
lasagna.preparation_time_in_minutes(2)
# => 4
Defina o método Lasagna#total_time_in_minutes que recebe dois parâmetros nomeados: o parâmetro number_of_layers é o número de camadas que você adicionou à lasanha, e o parâmetro actual_minutes_in_oven é o número de minutos que a lasanha está no forno. A função deve retornar quantos minutos, no total, você trabalhou no preparo da lasanha, que é a soma do tempo de preparo em minutos com o tempo, em minutos, que a lasanha passou no forno até o momento.
lasagna = Lasagna.new
lasagna.total_time_in_minutes(number_of_layers: 3, actual_minutes_in_oven: 20)
# => 26
Crie sua conta no Exercism para aprender e dominar Ruby com 21 conceitos121 exercícios e mentoria humana de verdade, tudo de graça.