Track
/
Ruby
Ruby
/
Esercizi
/
Testamento
Testamento

Testamento

Esercizio di apprendimento

Introduzione

Un metodo importante per organizzare il codice è l'uso dei namespace. Le classi e i moduli forniscono namespace. Due metodi potrebbero avere una collisione di nomi. Si può risolvere mettendoli in namespace diversi. I namespace possono essere annidati, il che può aiutare a strutturare codebase di grandi dimensioni. Si accede ai namespace tramite l'operatore di risoluzione dello scope ::.

L'esempio seguente mostra l'uso di due metodi foo diversi. Vengono usati insieme anteponendo i rispettivi namespace.

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

Tieni presente che i namespace vengono interpretati in base a dove si trova il codice in esecuzione. Per fare riferimento a qualcosa nel namespace root, cioè al di fuori di tutti i namespace definiti, inizia con ::.

Per esempio:

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

Istruzioni

Lavori per un prestigioso studio legale specializzato in richieste testamentarie particolari.

In questo esercizio aprirai una misteriosa cassaforte. Sei l'esecutore testamentario e metterai insieme i codici segreti custoditi a lungo da tre famiglie per ottenere un numero di conto e il codice corrispondente.

Per evitare che una famiglia possa aprire la cassaforte da sola, la si può aprire solo combinando le loro conoscenze con un modificatore segreto che conosci dal testamento.

Hai tre attività, tutte legate ad aiutare le famiglie ad aprire la cassaforte.

Definisci un namespace chiamato EstateExecutor. Il codice delle attività successive va definito nel corpo del namespace EstateExecutor.

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

Questo è il tuo grande momento. Solo tu possiedi la chiave del modificatore segreto per rivelare il numero di conto segreto.

Definisci il metodo assemble_account_number(secret_modifier), che prende come argomento il modificatore segreto di tipo Integer e restituisce il numero di conto composto, di tipo Integer.

Per ottenere il numero corretto, devi sommare il bank_number_part di ciascuna delle tre famiglie.

Le istruzioni del testamento ti chiedono di sommare prima tutti i frammenti blu e poi tutti quelli rossi. Il codice risultante si ottiene moltiplicando le due somme.

Definisci il metodo assemble_code, che restituisce il codice risultante combinando i frammenti delle tre famiglie in un unico risultato di tipo Integer. Il metodo non ha argomenti e si basa esclusivamente sulle informazioni contenute nei namespace pertinenti delle famiglie.

Creato da

  • @vaeng (esercizio originale in C++)
  • @vaiapatta1985 (trascrizione in Ruby)
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Ruby Exercism

Vuoi iniziare Testamento?

Iscriviti a Exercism per imparare e padroneggiare Ruby con 21 concetti121 esercizi e il mentoring di persone reali, tutto gratis.