Testamento

Testamento

Exercício de aprendizagem

Introdução

Namespaces

Um método importante para organizar o código é o uso de namespaces. Classes e módulos fornecem namespaces. Dois métodos podem ter uma colisão de nomes, que pode ser resolvida colocando-os em namespaces diferentes. Os namespaces podem ser aninhados, o que pode ajudar a estruturar grandes bases de código. O acesso aos namespaces é feito pelo operador de resolução de escopo ::.

O exemplo abaixo mostra o uso de dois métodos foo diferentes. Eles são usados juntos ao prefixar seus respectivos namespaces.

class MyNamespace
  def self.foo
    44
  end

  class MyInnerNamespace
    def self.baz
      90
    end
  end
end

class MyOtherNamespace
  def self.foo
    -2
  end
end

p MyNamespace::foo + MyOtherNamespace::foo * MyNamespace::MyInnerNamespace::baz  # => -136

Repare que a interpretação dos namespaces depende de onde está o código em execução. Para se referir a algo no namespace raiz (ou seja, fora de todos os namespaces definidos), comece com ::.

Por exemplo:

class Example
  def self.example
    5
  end
end

class MyNamespace

  class Example
    def self.example
      10
    end
  end

  def self.call_example
    p Example::example  # => 10
    p ::Example::example  # => 5
  end
end

Instruções

Você trabalha em um escritório de advocacia de prestígio, especializado em cuidar de pedidos de testamento incomuns.

Neste exercício, você vai abrir um cofre misterioso. Você é o testamenteiro e vai reunir os códigos secretos guardados há muito tempo por três famílias para obter um número de conta e o código correspondente.

Para impedir que qualquer família abra o cofre sozinha, ele só pode ser aberto combinando o conhecimento delas com um modificador secreto que você conhece do testamento.

Você tem três tarefas, todas relacionadas a ajudar as famílias a abrir o cofre.

1. Sente-se diante das famílias e organize seus papéis

Defina um namespace chamado EstateExecutor. O código das próximas tarefas deve ser definido no corpo do namespace EstateExecutor.

class SomeName
  # The space between the class/module name
  # and the `end` keyword
  # is called body of the  namespace.
end

2. Encontre o número secreto da conta

Este é o seu grande momento. Só você tem a chave modificadora secreta para revelar o número secreto da conta.

Defina o método assemble_account_number(secret_modifier), que recebe o modificador secreto do tipo Integer como argumento e retorna o número de conta montado, do tipo Integer.

Para obter o número correto, você precisa somar o bank_number_part de cada uma das três famílias.

3. Último passo: insira o código secreto

As instruções do testamento pedem que você some todos os fragmentos azuis e depois todos os vermelhos. O código resultante é obtido multiplicando as duas somas.

Defina o método assemble_code, que retorna o código resultante combinando os fragmentos das três famílias em um único resultado do tipo Integer. O método não tem nenhum argumento e depende apenas das informações nos namespaces relevantes das famílias.

Editar via GitHub O link abre em uma nova janela ou aba
Ruby Exercism

Tudo pronto para começar Testamento?

Crie sua conta no Exercism para aprender e dominar Ruby com 21 conceitos121 exercícios e mentoria humana de verdade, tudo de graça.